Block.st
changeset 20623 1f54b9dbfea2
parent 20621 acb096a8c2b1
child 20727 fb8c5591428b
child 20773 c9d6f5d209d9
equal deleted inserted replaced
20622:952f7804f48c 20623:1f54b9dbfea2
  1069      block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
  1069      block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
  1070      block value:2 optionalArgument:3.
  1070      block value:2 optionalArgument:3.
  1071     "
  1071     "
  1072 !
  1072 !
  1073 
  1073 
       
  1074 value:arg1 optionalArgument:arg2 and:arg3 and:arg4
       
  1075     "evaluate the receiver.
       
  1076      Optionally pass up one, two, three or four arguments 
       
  1077      (if the receiver is a 1/2/3/4-arg block)."
       
  1078 
       
  1079     nargs == 4 ifTrue:[
       
  1080         ^ self value:arg1 value:arg2 value:arg3 value:arg4
       
  1081     ].
       
  1082     nargs == 3 ifTrue:[
       
  1083         ^ self value:arg1 value:arg2 value:arg3
       
  1084     ].
       
  1085     nargs == 2 ifTrue:[
       
  1086         ^ self value:arg1 value:arg2
       
  1087     ].
       
  1088     ^ self value:arg1
       
  1089 
       
  1090     "
       
  1091      |block|
       
  1092 
       
  1093      block := [:arg | Transcript showCR:arg ].
       
  1094      block value:1 optionalArgument:2 and:3 and:4.
       
  1095 
       
  1096      block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
       
  1097      block value:1 optionalArgument:2 and:3 and:4.
       
  1098 
       
  1099      block := [:arg1 :arg2 :arg3 :arg4 | Transcript showCR:{arg1 . arg2 . arg3 . arg4}].
       
  1100      block value:1 optionalArgument:2 and:3 and:4.
       
  1101     "
       
  1102 !
       
  1103 
       
  1104 value:arg1 optionalArgument:arg2 and:arg3 and:arg4 and:arg5
       
  1105     "evaluate the receiver.
       
  1106      Optionally pass up five arguments 
       
  1107      (if the receiver is a 1..5-arg block)."
       
  1108 
       
  1109     nargs == 5 ifTrue:[
       
  1110         ^ self value:arg1 value:arg2 value:arg3 value:arg4 value:arg5
       
  1111     ].
       
  1112     nargs == 4 ifTrue:[
       
  1113         ^ self value:arg1 value:arg2 value:arg3 value:arg4
       
  1114     ].
       
  1115     nargs == 3 ifTrue:[
       
  1116         ^ self value:arg1 value:arg2 value:arg3
       
  1117     ].
       
  1118     nargs == 2 ifTrue:[
       
  1119         ^ self value:arg1 value:arg2
       
  1120     ].
       
  1121     ^ self value:arg1
       
  1122 
       
  1123     "
       
  1124      |block|
       
  1125 
       
  1126      block := [:arg | Transcript showCR:arg ].
       
  1127      block value:1 optionalArgument:2 and:3 and:4 and:5.
       
  1128 
       
  1129      block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
       
  1130      block value:1 optionalArgument:2 and:3 and:4 and:5.
       
  1131 
       
  1132      block := [:arg1 :arg2 :arg3 :arg4 :arg5 | Transcript showCR:{arg1 . arg2 . arg3 . arg4 . arg5}].
       
  1133      block value:1 optionalArgument:2 and:3 and:4 and:5.
       
  1134     "
       
  1135 !
       
  1136 
       
  1137 value:arg1 optionalArgument:arg2 and:arg3 and:arg4 and:arg5 and:arg6
       
  1138     "evaluate the receiver.
       
  1139      Optionally pass up six arguments 
       
  1140      (if the receiver is a 1..6-arg block)."
       
  1141 
       
  1142     nargs == 6 ifTrue:[
       
  1143         ^ self value:arg1 value:arg2 value:arg3 value:arg4 value:arg5 value:arg6
       
  1144     ].
       
  1145     nargs == 5 ifTrue:[
       
  1146         ^ self value:arg1 value:arg2 value:arg3 value:arg4 value:arg5
       
  1147     ].
       
  1148     nargs == 4 ifTrue:[
       
  1149         ^ self value:arg1 value:arg2 value:arg3 value:arg4
       
  1150     ].
       
  1151     nargs == 3 ifTrue:[
       
  1152         ^ self value:arg1 value:arg2 value:arg3
       
  1153     ].
       
  1154     nargs == 2 ifTrue:[
       
  1155         ^ self value:arg1 value:arg2
       
  1156     ].
       
  1157     ^ self value:arg1
       
  1158 
       
  1159     "
       
  1160      |block|
       
  1161 
       
  1162      block := [:arg | Transcript showCR:arg ].
       
  1163      block value:1 optionalArgument:2 and:3 and:4 and:5 and:6.
       
  1164 
       
  1165      block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
       
  1166      block value:1 optionalArgument:2 and:3 and:4 and:5 and:6.
       
  1167 
       
  1168      block := [:arg1 :arg2 :arg3 :arg4 :arg5 :arg6 | Transcript showCR:{arg1 . arg2 . arg3 . arg4 . arg5 . arg6}].
       
  1169      block value:1 optionalArgument:2 and:3 and:4 and:5 and:6.
       
  1170     "
       
  1171 !
       
  1172 
  1074 value:arg1 value:arg2
  1173 value:arg1 value:arg2
  1075     "evaluate the receiver with two arguments.
  1174     "evaluate the receiver with two arguments.
  1076      The receiver must be a 2-arg block."
  1175      The receiver must be a 2-arg block."
  1077 
  1176 
  1078 %{  /* NOCONTEXT */
  1177 %{  /* NOCONTEXT */
  1167 # endif
  1266 # endif
  1168     }
  1267     }
  1169 #endif /* not SCHTEAM */
  1268 #endif /* not SCHTEAM */
  1170 %}.
  1269 %}.
  1171     ^ self wrongNumberOfArguments:3
  1270     ^ self wrongNumberOfArguments:3
       
  1271 !
       
  1272 
       
  1273 value:arg1 value:arg2 value:arg3 optionalArgument:arg4
       
  1274     "evaluate the receiver.
       
  1275      Optionally pass three or four arguments (if the receiver is a 3/4-arg block)."
       
  1276 
       
  1277     nargs == 4 ifTrue:[
       
  1278         ^ self value:arg1 value:arg2 value:arg3 value:arg4
       
  1279     ].
       
  1280     ^ self value:arg1 value:arg2 value:arg3
  1172 !
  1281 !
  1173 
  1282 
  1174 value:arg1 value:arg2 value:arg3 value:arg4
  1283 value:arg1 value:arg2 value:arg3 value:arg4
  1175     "evaluate the receiver with four arguments.
  1284     "evaluate the receiver with four arguments.
  1176      The receiver must be a 4-arg block."
  1285      The receiver must be a 4-arg block."