变量还是方法?
这个语句:name = my_name
在别的语言中,my_name基本就是局部变量了。(注意下语境吧,别讨论xxx)
在ruby中,因为方法调用可以省略括号,因此my_name也可能是一个方法,比如很可能是这个:self.my_name
>这个只是针对“右值”情况;
>如果是“左值”,则比较单一,就是局部变量,不是方法调用。所以,这里的name,不是方法。即使定义了name=这个方法。
这样的不好处是什么呢:不统一。凡是不统一的,人就会去猜,就需要解释,就是个潜在的雷。
从技术上来说,就是不能实现这个功能:去除@符号的实例变量。
Java中的实例变量:
暂略
Ruby中尝试实现类似的:
class Lee
attr_accessor :name
end
lee = Lee.new
lee.name = "fantaxy"
puts lee.name
特别像。
但是上面的测试不是完全覆盖的。
再来个例子:
class Lee
attr_accessor :name
def a_test_method
name = "fantaxy"
end
def another_test_method
name = "June"
self.name = name
end
end
lee = Lee.new
lee.a_test_method
puts lee.name #=> nil
lee.another_test_method
puts lee.name #=> June
这个例子里面,当name作为左值的时候,没有了@符号(即如果不用@name) ,name就成了局部变量了。
输出结果证实了这一点。
需要在name前面加上self才可以!!
小姐:
#1 统一成java类似版本的实例变量使用还不行
#2 这种左值和右值使用不一致,是个需要注意的陷阱
#3 ruby中方法调用省略括号,得到了n多好处的同时,也付出了不少代价!!
====完毕====
+
-
*
/
分享到:
相关推荐
这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了Ruby语言的学习和实践。以下是对这些知识点的详细说明: 1. **Ruby语言**:Ruby是一种面向对象的、动态类型的编程...
Ruby是一种面向对象的脚本语言,以其简洁、优雅的语法和强大的编程能力而闻名。Ruby2.7.1是该语言的一个稳定版本,专为64位(x64)架构设计,提供更高的性能和更好的资源管理。RubyInstaller是Windows平台上安装Ruby...
Ruby是一种面向对象的编程语言,强调简洁和可读性,由日本人松本行弘(Yukihiro Matsumoto)于1995年创建。这本书旨在通过大量的实践练习帮助读者快速掌握Ruby的基本概念和语法。 在Ruby的世界里,一切皆对象,这是...
Ruby是一种面向对象的脚本语言,由日本的松本行弘(Yukihiro Matsumoto)在1995年设计并开发,旨在提供一种简洁、优雅的编程方式,强调程序员的生产力和代码的可读性。Ruby 1.8和1.9是Ruby语言的两个重要版本,它们在...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称。在Ruby2.7.1_1_x64中,我们看到的是针对64位Windows系统的Ruby版本。这个版本包含了Ruby解释器、RubyInstaller以及DevKit,这些都是在Windows...
本文将深入探讨Ruby语言中的类变量、全局变量、实例变量,以及多态的概念,并结合Ruby编码规范来阐述如何有效地编写代码。 一、类变量 类变量在Ruby中以`@@`前缀表示,它们是属于类或模块的共享变量,不会被类的...
Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_...
### Ruby语言教程:深入解析Ruby变量类型 #### 一、引言 在编程语言中,变量扮演着极其重要的角色,它们用于存储数据并在程序运行过程中对其进行操作。Ruby 作为一种动态类型的脚本语言,提供了多种变量类型,使得...
3. **块(Block)和闭包(Closure)**:Ruby中的块是一段可以嵌入到方法调用中的代码,它可以捕获并操作外部作用域的变量,形成闭包。这是Ruby实现函数式编程的重要工具。 4. **元编程(Metaprogramming)**:Ruby...
Ruby 1.8.6 是一个历史悠久的 Ruby 语言版本,它在2007年发布,具有许多经典特性和功能。这个“ruby_1_8_6_core_rdocs”压缩包包含了该版本的核心库文档,是理解 Ruby 1.8.6 内核的关键资源。文档通常详细阐述了类、...
在Ruby中,任何不修改实例变量或全局变量,不调用有副作用的方法的函数都可视为纯函数。 2. **高阶函数**:高阶函数可以接受一个或多个函数作为参数,或者返回一个函数作为结果。Ruby中的Proc和Lambda就是很好的...
Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...
《Ruby Programming_向Ruby之父学程序设计_第2版》PDF版本下载
提供空的Module#ruby2_keywords方法,以实现与ruby2.7和ruby3的正向源代码级兼容性。 安装 将此行添加到您的应用程序的Gemfile中: gem 'ruby2_keywords' 然后执行: $ bundle 或将其自己安装为: $ gem ...
Ruby作为一种简洁且强大的编程语言,被广泛用于编写自动化测试脚本。Watir(Web Application Testing in Ruby)是Ruby社区开发的一个开源库,它允许我们用Ruby来编写浏览器自动化测试,支持多种主流浏览器,如Chrome...
Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。Ruby 1.9.3是该语言的一个重要版本,它在功能、性能和兼容性上都有显著提升。这个"ruby_1_9_3_core_rdocs...
Ruby是一种跨平台、面向对象的解释型编程语言。它由松本行弘(Yukihiro Matsumoto),人们通常亲切地称他为Matz,于1995年开始设计,并在1997年发布了第一个版本。Ruby的设计哲学是“简单实用”,即通过最少的努力来...
在Ruby编程语言中,元编程(Metaprogramming)是一种强大的特性,允许程序在运行时检查、修改甚至创建自身的结构和行为。元编程能够增加代码的灵活性和可扩展性,但同时也需要谨慎使用,以避免过度复杂化和降低代码...
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...