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}}== |