Constrained genericity: Difference between revisions

Content added Content deleted
m (→‎{{header|Wren}}: Changed to Wren S/H)
(Added FreeBASIC)
Line 535: Line 535:
1
1
Error: Type mismatch in argument 'f' at (1); passed TYPE(brick_t) to CLASS(eatable)
Error: Type mismatch in argument 'f' at (1); passed TYPE(brick_t) to CLASS(eatable)

</pre>
</pre>

=={{header|FreeBASIC}}==
{{trans|OxygenBasic}}
<syntaxhighlight lang="vbnet">Type physical As Double

Enum food
oyster = 1
trout
bloater
chocolate
truffles
cheesecake
cream
pudding
pie
End Enum

Type ActualFood
nombre As Integer
size As physical
quantity As physical
End Type

Type foodbox
Item(100) As ActualFood
max As Integer
End Type

Sub put_(Byref fb As foodbox, Byval f As Integer, Byval s As physical, Byval q As physical)
fb.max += 1
fb.Item(fb.max).nombre = f
fb.Item(fb.max).size = s
fb.Item(fb.max).quantity = q
End Sub

Sub GetNext(Byref fb As foodbox, Byref Stuff As ActualFood)
If fb.max > 0 Then
Stuff = fb.Item(fb.max)
fb.max -= 1
End If
End Sub

Type Gourmand
WeightGain As physical
SleepTime As physical
End Type

Sub eats(Byref g As Gourmand, Byref stuff As ActualFood)
g.WeightGain += stuff.size * stuff.quantity * 0.75
stuff.size = 0
stuff.quantity = 0
End Sub

' Test
Dim As foodbox Hamper
Dim As Gourmand MrG
Dim As ActualFood Course

put_(Hamper, food.pudding, 3, 7)
put_(Hamper, food.pie, 7, 3)
GetNext(Hamper, Course)
eats(MrG, Course)

Print MrG.WeightGain ' result 15.75

Sleep</syntaxhighlight>


=={{header|Go}}==
=={{header|Go}}==