Date dayMonthYearDo 的正确参数是什么:在 Smalltalk 中看起来像什么(Pharo / Squeak)
What do the correct arguments for Date dayMonthYearDo: look like in Smalltalk (Pharo / Squeak)
Date dayMonthYearDo: aBlock
"Supply integers for day, month and year to aBlock and return the result"
^ start dayMonthYearDo: aBlock
此消息的典型有效块应该是什么样的?
像这样:
Date today dayMonthYearDo: [:d :m :y| Transcript cr;
show: 'today is the ';
show: d;
show: 'th'
]
today is the 28th
但当然你可以做不同的事情,只是在成绩单上展示一些东西
在这种情况下,注释 "Supply integers, etc." 表示参数 aBlock
将接收三个整数作为 "actual" 参数:天数,月指数和年。这意味着您必须创建一个包含三个 "formal" 参数的块,例如 day
、monthIndex
和 year
,如:
aDate dayMonthYearDo: [:day :monthIndex :year | <your code here>]
你在<your code here>
里面写的代码可以引用"formal"参数day
、monthIndex
和year
,就像是一个方法一样有了这三个参数。
这就是块在 Smalltalk 中的一般工作方式。
例子
aDate
dayMonthYearDo: [:day :monthIndex :year |
monthIndex + day = 2
ifTrue: [Transcript show: 'Happy ' , year asString, '!']]
更新
上面的示例通过 "ingeniously" 比较 monthIndex + day
和 2
来检查 1 月 1 日。事实上,由于两个变量都 >= 1,所以获得 2
的唯一方法是当 day
和 monthIndex
都是 1
时,即当接收者 aDate
是 1 月 1 日。更 "serious" 的方法看起来像
(monthIndex = 1 and: [day = 1]) ifTrue: [ <etc> ]
Date dayMonthYearDo: aBlock
"Supply integers for day, month and year to aBlock and return the result"
^ start dayMonthYearDo: aBlock
此消息的典型有效块应该是什么样的?
像这样:
Date today dayMonthYearDo: [:d :m :y| Transcript cr;
show: 'today is the ';
show: d;
show: 'th'
]
today is the 28th
但当然你可以做不同的事情,只是在成绩单上展示一些东西
在这种情况下,注释 "Supply integers, etc." 表示参数 aBlock
将接收三个整数作为 "actual" 参数:天数,月指数和年。这意味着您必须创建一个包含三个 "formal" 参数的块,例如 day
、monthIndex
和 year
,如:
aDate dayMonthYearDo: [:day :monthIndex :year | <your code here>]
你在<your code here>
里面写的代码可以引用"formal"参数day
、monthIndex
和year
,就像是一个方法一样有了这三个参数。
这就是块在 Smalltalk 中的一般工作方式。
例子
aDate
dayMonthYearDo: [:day :monthIndex :year |
monthIndex + day = 2
ifTrue: [Transcript show: 'Happy ' , year asString, '!']]
更新
上面的示例通过 "ingeniously" 比较 monthIndex + day
和 2
来检查 1 月 1 日。事实上,由于两个变量都 >= 1,所以获得 2
的唯一方法是当 day
和 monthIndex
都是 1
时,即当接收者 aDate
是 1 月 1 日。更 "serious" 的方法看起来像
(monthIndex = 1 and: [day = 1]) ifTrue: [ <etc> ]