当定义一个函数时,任何一门语言都需要一种机制来确定函数的一些基本性质,比如:
返回值类型(可选,动态语言是没有类型的,还记得吗?) 函数名 函数参数 函数的边界(如何确定函数的开始和结束) 如何返回
C/C++/Java的做法:
int foo(double d)
{
return 3;
}
lua的做法:
function foo(d)
return 3
end
perl的做法:
sub foo {
3; #3是返回值
}
(the way perl uses is obscure....)
python的做法:
def Foo(params):
print foo
前天在lua也遇到了 and 和 or的困扰
'a' and 'b' => 'b'
'' and 'b' => ''
其实很简单,返回的是这个式子结束处理时的那个值。
比如第一个式子,'a'是True,那么去判断'b'是不是True,不管是不是,它是最后一个被操作的值,所以不管它的值是不是True,
都没关系,返回的就是它,同理,对于第二个式子,因为''是False, and操作符要求的是两边都是True,因此此时不用去判断'b'了,
因此''是最后一个被操作的值,因此返回''.
lua认为nil和false是假,其他都是真
而python认为0, '', [](空list), {}(空字典), ()(空tuple)都是假,其他都是真,另外注意python的真假关键字都是首字母大写的
返回值类型(可选,动态语言是没有类型的,还记得吗?) 函数名 函数参数 函数的边界(如何确定函数的开始和结束) 如何返回
C/C++/Java的做法:
int foo(double d)
{
return 3;
}
lua的做法:
function foo(d)
return 3
end
perl的做法:
sub foo {
3; #3是返回值
}
(the way perl uses is obscure....)
python的做法:
def Foo(params):
print foo
前天在lua也遇到了 and 和 or的困扰
'a' and 'b' => 'b'
'' and 'b' => ''
其实很简单,返回的是这个式子结束处理时的那个值。
比如第一个式子,'a'是True,那么去判断'b'是不是True,不管是不是,它是最后一个被操作的值,所以不管它的值是不是True,
都没关系,返回的就是它,同理,对于第二个式子,因为''是False, and操作符要求的是两边都是True,因此此时不用去判断'b'了,
因此''是最后一个被操作的值,因此返回''.
lua认为nil和false是假,其他都是真
而python认为0, '', [](空list), {}(空字典), ()(空tuple)都是假,其他都是真,另外注意python的真假关键字都是首字母大写的