Ruby语法

Python07

Ruby语法,第1张

Ruby 程序中,命令行使用 ARGV 这个 Ruby 预定义好的数组来获取从命令行传递过来的数据。

print_argv.rb

执行 print_argv.rb 文件

从参数里得到的数据都是字符串,因此如果希望进行运算时,需要对获得的数据进行类型转换。把字符串转换为整数,我们可以使用 to_i 方法

9是一个Integer对象,是一个build-in type,python中你是无法对Integer type进行这种改造的,而ruby可以轻松实现。

2>动态能力,ruby不仅是1>中提到的开放了所有的权限,更是连语法解析器都开放了一部分,于是你还可以参与构建语法树AST的一部分工作。

比方说,我们(python和ruby)都来动态的创造一个函数,耦合一个类实例的两个方法,需求是第一个方法执行的结果作为参数来调用第二个方法。

python中的做法就有点类似于java,利用反射api来实现。

obj = Klass()

def dynamic_method(_self, *args, **kwargs):

method1 = getattr(Klass, "func1")

method2 = getattr(Klass, "func2")

res1 = method1(obj, *args, **kwargs)

res2 = method2(obj, res1)

return res2

bind_attr(Klass, dynamic_method)

乍一看,似乎并没有什么问题,流程清晰。但是,我们似乎没有想过