Project1

标题: show这个命令是啥,没有找到? [打印本页]

作者: miantouchi    时间: 2019-11-18 11:40
标题: show这个命令是啥,没有找到?
RUBY 代码复制
  1. str = "66"
  2.  
  3. def str.show
  4.   p "77"
  5. end
  6.  
  7. str_clone = str.clone
  8. str_dup = str.dup
  9.  
  10. str_clone.show #=> "77"
  11. str_dup.show   #=> NoMethodError


论坛里面翻到的,下面定义的str.show字符串后面跟了show,我翻F1和论坛没有找到这个是啥意思?
也没有遇到过这么个写法,顶多就是self.方法名
作者: 百里_飞柳    时间: 2019-11-18 12:59
本帖最后由 百里_飞柳 于 2019-11-18 13:03 编辑

str 是 String类的一个实例

def str.show
end
是给这个实例绑定一个方法,名字叫show
之后就能调用 str 的 show 方法来执行内容

而对于其他String类的实例(比如 dup 返回的实例,只会通过String类获得共有的方法),并没有这个show方法


这个东西叫做 单例方法,clone和dup的区别:
https://ruby-china.org/topics/18922
作者: miantouchi    时间: 2019-11-18 13:01
百里_飞柳 发表于 2019-11-18 12:59
str 是 String类的一个实例

def str.show


这我还是第一次看到,看一绑定方法的。就看过在类里面定义方法的
class A
  def show
      p "aa"
  end
end
作者: fux2    时间: 2019-11-18 13:52
你这种方式定义的是实例方法,
就好比你定义了两个人类,给其中一个人类定义了尾巴,另一个却没有,
当你调用尾巴函数的时候没有尾巴的人类就会出错了,
正常情况下这些定义都是在“人类”这个大类型里定义的,定义全人类都有尾巴,这样所有人调用尾巴的时候就不会出错了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1