如果不使用if-test或者是针对类型检查的测试,如何在smalltalk中完成?
例如 :
function Add( x, y : Integer ) : Integer;
begin
Add := x + y
end;
function Add( s, t : String ) : String;
begin
Add := Concat( s, t )
end;
Run Code Online (Sandbox Code Playgroud)
Luk*_*gli 12
Smalltalk没有像您的示例中那样的全局方法.要实现您的示例,您可以将方法添加#add:到两个类Integer和String类扩展:
Integer>>add: anInteger
^ self + anInteger
String>>add: aString
^ self , aString
Run Code Online (Sandbox Code Playgroud)
然后你可以编写如下代码:
1 add: 2. " -> 3 "
'foo' add: 'bar'. " -> 'foobar' "
Run Code Online (Sandbox Code Playgroud)
不需要if-test,因为根据方法的接收者调用正确的方法add:.
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |