在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
类变量与类方法执行下面的程序的话便发生了错误。请将程序进行修改以能正确运行。 class Robot def self.ping @@count += 1 end def count @@count end end r1 = Robot.new r1.ping r2 = Robot.new r2.ping r1.ping puts Robot.count
在终端执行此程序的话,画面上显示3。 -- 解答与说明的显示・隐藏
解答与说明这次完全不存在让人感到棘手的地方。实际上只要运行Ruby解释器进行修改的话,就可在比较短的时间内解决问题。 但是如果让你只用铅笔和纸来解决问题的话又怎么样呢。 我想正确率一定很低。 从寄来解答的诸君那里,也听到了“这次算是又学习了”的感慨。 *** 先简单的温习一下类变量与类方法吧。 类变量在名称的前面添加 类方法是类提供的“方便的的函数(功能)”。与实例方法查看、改变类的状态相对照。类方法也可以从类的外部进行利用。 *** 于是很快能发现的是,类方法与实例方法的定义是相反的。类方法名称的前面可以添加
但是,只修改两处的的方法定义的话显然不够。试着运行的话便会出现下面的错误信息。
robot.rb:3:in `ping': uninitialized class variable @@count in Robot (NameError) 类变量的 应该在哪里执行类变量的初始化呢。 下面的代码是笔名为 y@su 的先生写的对
这也能运行,但是构造函数 类变量在类定义中初始化。 下面是示范解答。
大詰君、MTG君、river125君的代码,与示范解答完全一样,在此感谢。 (2009/07/30) Ruby 练习问题集模块与类(1)在当前目录中存在一个下列内容的文件 module Mod def foo "Foo" + bar end private def bar "Bar" end end 请利用 类 puts Klass.foo 最后在终端输出 FooBar 。 -- 解答与说明的显示・隐藏
解答与说明这是一个怎样将模块作为类方法引用的问题。 好像有一点难的样子。 MTG君在说着“很难得到正确答案”的同时,发来了下面的代码。
一般的使用 下面的代码是 river125 的答案。
因为问题中写了“利用 大詰君提供了了正确解答。
Ruby参考手册的Object,就 特殊方法是什么呢。 这是在与实例方法进行对比时使用的语言。别名为单例方法。 具有某个对象 实例方法被其对象的类定义,并被类的实例全体所共有。 与此相对,特殊方法在对象中被定义。 更准确的说法是,对象在所属的特殊类中被定义。 总之,被一个对象专有的方法就是特殊方法。 那么,像怎样写的时候,应该怎么做呢。
虽然方法 请回想一下在Ruby 语言里,类即是对象。 一句话,就是将模块 实际上,“类方法”就是类的特殊方法! * * *
最后来看示范解答。
虽然比使用
因为明确了从模块引入的类方法与独自的类方法的关系,我喜欢下面这样的写法。 此外,还可以重写私有方法
顺便说一下,下面这样大体上也能重写,但是
虽然 (2009/08/06) |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论