• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby编程中的赋值相关操作

Ruby编程中的赋值相关操作

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了ruby编程,ruby元编程,ruby编程语言,ruby元编程 第2版 pdf,ruby编程工具等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在老版本的Ruby中,赋值语句的返回值是设置该属性的方法的返回值。在Ruby1.8中,赋值语句的值总是参数的值而方法的返回值将被丢掉。
 

class Test
  def val=(val)
    @val = val
    return 99
  end    
end
 
t = Test.new
a = t.val=2
a           ->2
</div>

 在老版本中,a将被赋值语句设置为99,而在Ruby1.8中,它的值为2.

Ruby的赋值实际是以并行方式执行的,所以赋值语句右边的值不受赋值语句本身的影响。在左边的任意一个变量或者属性被赋值之前,右边的值按它们出现的顺序被计算出来。下面这个人为设计的例子说明了这一点。第二行讲表达式x ,x+=1和x+=1的值分别赋值给变量a、b和c。
 

x = 0                 -> 0
a,b,c =x,(x+=1),(x+=1)   ->[0,1,2]
</div>

当赋值语句有多于一个左值时,赋值表达式将返回由右值组成的数组。如果赋值语句的左值多于右值,那么多余的左值将被忽略。如果右值多余左值,那么额外的右值将被忽略。如果赋值语句仅有一个左值而有多个右值,那么右值将被转换成数组,然后赋值给左值。

 其实,可写属性有个隐藏的陷阱。通常,类中的方法可以通过函数形式(即带一个隐式self作为接收者)调用同一个类的其他方法和它的父类的方法。然而这不适用于属性赋值函数:Ruby看到赋值语句时,会认为左边的名字是局部变量,而不是一个为属性赋值的方法调用。
 

class BrokenAmplifier
 attr_accessor :left_channel, :right_channel
 def volume=(vol)
   left_channel = self.right_channel = vol     
 end  
end
 
ba = BrokenAmplifier.new
ba.left_channel = ba.right_channel =99
ba.volume=5
ba.left_channel          ->99
ba.right_channel         ->5
</div>

  在上面的赋值语句中,我们忘了给left_channel加"self."前缀,所以Ruby存储新值给volume= 方法的局部变量,因为根本没有更新对象属性。这会成为难以追踪的缺陷

</div>

您可能想查找下面的文章:

  • Ruby和元编程之万物皆为对象
  • 使用ruby部署工具mina快速部署nodejs应用教程
  • ruby元编程实际使用实例
  • 21个你应该知道的Ruby编程技巧
  • Ruby的语法和语言特性总结
  • Ruby设计模式编程中对外观模式的应用实例分析
  • Ruby设计模式编程中使用Builder建造者模式的实例
  • Ruby设计模式编程之适配器模式实战攻略
  • Ruby元编程的一些值得注意的地方
  • Ruby编程中的命名风格指南

相关文章

  • Ruby中require、load、include、extend的区别介绍
  • rudy 继承 概念
  • ruby 迭代器使用方法
  • 在Ruby on Rails中使用AJAX的教程
  • 实例解析Ruby程序中调用REXML来解析XML格式数据的用法
  • 详解组合模式的结构及其在Ruby设计模式编程中的运用
  • Ruby中创建字符串的一些技巧小结
  • Ruby中的Mechanize的使用教程
  • ruby环境中自动编译sass教程
  • Ruby on Rails中jquery_ujs组件拖慢速度的问题解决

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 使用C++来编写Ruby程序扩展的教程
    • 浅谈Ruby on Rails下的rake与数据库数据迁移操作
    • Ruby常用文件操作代码实例
    • ruby元编程之method_missing的一个使用细节
    • 浅析Ruby中的类对象的概念
    • Ruby中变量引用时的一些注意点
    • Ruby中实现把字符串转换为类的2种方法
    • Ruby中操作字符串的一些基本方法
    • 分析Cache 在 Ruby China 里面的应用情况
    • Ruby中一些常用的文件操作方法小结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有