`
fantaxy025025
  • 浏览: 1308983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Ruby语言_陷阱_地雷_等的搜集(一)是变量还是方法_不统一

 
阅读更多

 

变量还是方法?

 

这个语句: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.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了Ruby语言的学习和实践。以下是对这些知识点的详细说明: 1. **Ruby语言**:Ruby是一种面向对象的、动态类型的编程...

    Ruby2.7.1_1_x64

    Ruby是一种面向对象的脚本语言,以其简洁、优雅的语法和强大的编程能力而闻名。Ruby2.7.1是该语言的一个稳定版本,专为64位(x64)架构设计,提供更高的性能和更好的资源管理。RubyInstaller是Windows平台上安装Ruby...

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    Ruby是一种面向对象的编程语言,强调简洁和可读性,由日本人松本行弘(Yukihiro Matsumoto)于1995年创建。这本书旨在通过大量的实践练习帮助读者快速掌握Ruby的基本概念和语法。 在Ruby的世界里,一切皆对象,这是...

    Ruby编程语言_涵盖Ruby 1.8和1.9

    Ruby是一种面向对象的脚本语言,由日本的松本行弘(Yukihiro Matsumoto)在1995年设计并开发,旨在提供一种简洁、优雅的编程方式,强调程序员的生产力和代码的可读性。Ruby 1.8和1.9是Ruby语言的两个重要版本,它们在...

    Ruby2.7.1_1_x64,

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称。在Ruby2.7.1_1_x64中,我们看到的是针对64位Windows系统的Ruby版本。这个版本包含了Ruby解释器、RubyInstaller以及DevKit,这些都是在Windows...

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    本文将深入探讨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_exercises_in_Ruby._ruby.zip Exercism_...

    Ruby语言教程:Ruby 变量示例

    ### Ruby语言教程:深入解析Ruby变量类型 #### 一、引言 在编程语言中,变量扮演着极其重要的角色,它们用于存储数据并在程序运行过程中对其进行操作。Ruby 作为一种动态类型的脚本语言,提供了多种变量类型,使得...

    Ruby语言入门教程v1.0_ruby语言入门教程_

    3. **块(Block)和闭包(Closure)**:Ruby中的块是一段可以嵌入到方法调用中的代码,它可以捕获并操作外部作用域的变量,形成闭包。这是Ruby实现函数式编程的重要工具。 4. **元编程(Metaprogramming)**:Ruby...

    ruby_1_8_6_core_rdocs

    Ruby 1.8.6 是一个历史悠久的 Ruby 语言版本,它在2007年发布,具有许多经典特性和功能。这个“ruby_1_8_6_core_rdocs”压缩包包含了该版本的核心库文档,是理解 Ruby 1.8.6 内核的关键资源。文档通常详细阐述了类、...

    函数式-确定性-Ruby取笑___下载.zip

    在Ruby中,任何不修改实例变量或全局变量,不调用有副作用的方法的函数都可视为纯函数。 2. **高阶函数**:高阶函数可以接受一个或多个函数作为参数,或者返回一个函数作为结果。Ruby中的Proc和Lambda就是很好的...

    Ruby-rubybuild编译和安装Ruby

    Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...

    《Ruby Programming_向Ruby之父学程序设计_第2版》PDF版本下载.txt

    《Ruby Programming_向Ruby之父学程序设计_第2版》PDF版本下载

    Ruby语言入门教程

    Ruby是一种面向对象的脚本语言,它以其简洁、优雅的语法和强大的编程能力而闻名。本教程旨在为初学者提供一个全面的Ruby语言入门指南,帮助他们快速掌握这门语言的基础知识。 首先,Ruby的核心设计理念是“人本主义...

    ruby2_keywords

    提供空的Module#ruby2_keywords方法,以实现与ruby2.7和ruby3的正向源代码级兼容性。 安装 将此行添加到您的应用程序的Gemfile中: gem 'ruby2_keywords' 然后执行: $ bundle 或将其自己安装为: $ gem ...

    test_logger1.rar_Logger wat_ruby _watir_watir ruby_watir-webdriv

    Ruby作为一种简洁且强大的编程语言,被广泛用于编写自动化测试脚本。Watir(Web Application Testing in Ruby)是Ruby社区开发的一个开源库,它允许我们用Ruby来编写浏览器自动化测试,支持多种主流浏览器,如Chrome...

    ruby_1_9_3_core_rdocs

    Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。Ruby 1.9.3是该语言的一个重要版本,它在功能、性能和兼容性上都有显著提升。这个"ruby_1_9_3_core_rdocs...

    Ruby_learning_教程-中文版

    Ruby是一种跨平台、面向对象的解释型编程语言。它由松本行弘(Yukihiro Matsumoto),人们通常亲切地称他为Matz,于1995年开始设计,并在1997年发布了第一个版本。Ruby的设计哲学是“简单实用”,即通过最少的努力来...

    label_break_ruby_Metaprogramming_

    在Ruby编程语言中,元编程(Metaprogramming)是一种强大的特性,允许程序在运行时检查、修改甚至创建自身的结构和行为。元编程能够增加代码的灵活性和可扩展性,但同时也需要谨慎使用,以避免过度复杂化和降低代码...

Global site tag (gtag.js) - Google Analytics