我是因为用了coffee所以萌生出想学学ruby的想法的,因为才刚开始学习,所以有些问题可能比较初级。Symbol对象的本质是什么?我看的代码里大量使用了:xxxx之类的语法,我从网上查到这个叫Symbol,从用法上来看它的本质应该是不是一种不需要预定义,但是会被预编译的常量?在Class里指向自身?作为从其他语言转向ruby的,我发现ruby在一个class调用this有如下几种使用self.xxxx直接调用当前类定义的xxxx方法使用@这给我这种习惯了在java,php这类语言里只有一种方法引用类本身的人带来了疑惑(当然java也可以省略this),可以具体解释下这三类用法的区别么?在Class里直接写代码?我在很多rails项目发现了这种代码classPersonattr_accessor:namedefset_name(your_name)name=your_nameendenddef...end那个没啥问题,但是前面的attr_accessor:name怎么看怎么像一个正常的方法调用嘛,是这样吗?这里的方法跟一般的方法有啥不同?为啥要这样写。因为一般的语言class里都只是声明语法,虽然scala之类的语言也可以执行代码,但不知道ruby的这种写法有什么应用场景。
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
Symbol是Ruby的一种基本类型(也是一种类),属于常量,用法跟枚举类型差不多方法1和2是等价的,因为这时候self指代这个类。一般用方法1,因为可以避免类重命名时需要修改的问题,而且可以加入到snippet里面。attr_accessor生成getter和setter方法。同样的,attr_reader生成getter,而attr_writer生成setter。在ruby里,在class中执行特殊的方法是常见的做法,这些方法一般都是用来修改(或增添)该class的某些特性的。
添加回答
举报
0/150
提交
取消
