`
dongsx
  • 浏览: 6882 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ruby变量和方法的二义性

阅读更多
在表达式中,当ruby看到象a这样子的名字,它就需要判断a是一个全局变量引用还是一个对没有参数的方法a的调用。ruby中使用了一种启发式的方法来判断这种情况。当ruby解析源代码文件时,它会记录所有已经被复制的符号,它认为这些符号式变量,如果没有记录,则认为是方法。
def a
print "Function 'a'"
99
end
for i in 1..2
if i == 2
print "a=", a, "\n"
else
a = 1
print "a=", a, "\n"
end
end

输出结果:
a = 1
Function 'a' called
a = 99
分享到:
评论

相关推荐

    Ruby Pocket Reference.pdf

    例如运行 Ruby 解释器、使用 Unix/Linux 系统中的 Shebang 行、在 Windows 上关联文件类型、Ruby 的保留字、运算符、注释、数字、变量、符号、预定义变量、伪变量、全局常量、范围、方法等。这些内容共同构成了 Ruby...

    Ruby-RDoc用于为Ruby项目生成HTML和命令行文档

    总的来说,Ruby-RDoc是Ruby开发中不可或缺的一部分,它提高了代码的可读性和可维护性,同时也是开源文化中促进协作和共享的重要工具。无论你是初学者还是经验丰富的开发者,熟练掌握RDoc的使用都将极大地提升你的...

    关于ruby学习的资料

    它提供了丰富的类库和方法,使得对象间的交互简单而直观。 2. 动态类型:变量的类型在运行时确定,无需提前声明。这使得编程更加灵活,但可能导致一些运行时错误。 3. 响应式编程:Ruby支持块(block)、闭包...

    Everyday Scripting With Ruby

    - **定义**:应用程序框架提供了一个结构化的方法来开发应用,通常包括一组预定义的组件和服务。 - **Ruby on Rails**:这是最著名的Ruby框架之一,遵循MVC(模型-视图-控制器)模式,简化了Web应用程序的开发过程。...

    Ruby电子书下载Ruby语言中文教程

    Ruby是一种面向对象的脚本语言,由日本程序员松本行弘于1993年...通过深入学习和实践,你可以利用Ruby的灵活性和强大功能,创造出高效、易于维护的代码。而一本高质量的Ruby电子书,无疑是你踏上这段旅程的得力伙伴。

    Ruby语言教程.docx

    ### Ruby语言教程知识点详解 #### 一、Ruby简介与特性 **定义与历史:** ...通过上述知识点的总结,我们可以看出Ruby不仅是一种功能强大的编程语言,而且具有广泛的适用性和灵活性,适用于多种不同的开发场景。

    Ruby语言中文教程

    函数和方法在Ruby中是等价的概念,它们都可以接受参数并返回结果。Ruby支持块(block),这是一种特殊的代码段,可以传递给方法执行。块可以通过`do..end`或花括号`{}`来定义,并通过`yield`关键字在方法内部调用。 ...

    Ruby-云片短息ruby服务器端api

    Ruby是面向对象的脚本语言,常用于Web开发和快速原型设计。云片(YunPian)是一家提供短信服务的公司,它们提供了各种API,让开发者能够方便地在自己的应用中集成短信发送功能。"云片短息Ruby服务器端API"就是针对...

    Ruby-pygmentsrbPythonpygments语法高亮显示的一个Ruby包装器

    通过区分关键字、变量、注释和字符串等不同元素的颜色和样式,高亮显示有助于快速定位和理解代码中的关键部分。 ### 2. Pygments 功能 - **多种语言支持**:`Pygments` 支持包括 Java、Python、Ruby、JavaScript ...

    ruby sass compass

    在这个组合中,Ruby是一个面向对象的脚本语言,Sass是CSS的预处理器,而Compass则是一个基于Sass的框架,提供了丰富的样式库和工具,极大地提高了CSS的编写效率和可维护性。 首先,我们要了解Ruby的安装。Ruby是一...

    vagrant_2.2.5_x86_64.msi

    Ruby 是Vagrant的基础,Vagrant的配置语言是基于Ruby的,这使得Vagrant具有高度的灵活性和可扩展性。开发者可以通过编写Ruby代码来实现复杂的环境配置。同时,Vagrant社区提供了大量的插件,这些插件可以扩展Vagrant...

    程序设计语言的OO特性调研报告 1

    继承允许一个类(子类)从另一个类(父类)继承属性和方法,实现代码的复用。子类可以扩展或修改父类的行为,提高了代码的灵活性。在Java中,使用extends关键字实现继承,子类可以拥有父类的所有非私有属性和方法。 ...

    XXXX华东运维技术大会的资料--运维自动化-Puppet应用与.pptx

    Puppet的架构允许构建集群以提高可用性和性能,并提供了性能测试的方法。在企业版中,Puppet提供了图形用户界面、云集成、VMware虚拟机管理、用户账户管理、应用管理和超过300个内置模块,以及7*24小时的技术支持。 ...

    经典的md5算法源码

    然而,随着时间的推移,MD5的安全性逐渐受到质疑,主要是因为碰撞攻击的存在,即找到两个不同的输入产生相同MD5哈希值的方法变得越来越容易。因此,在安全性要求较高的场景下,如敏感数据保护和电子交易,更推荐使用...

    emacs-crystal-mode:基于ruby模式的emacs最小晶体模式

    Crystal是一种静态类型的系统编程语言,它旨在提供像Ruby一样的开发速度和表达性,同时具有编译时检查和接近C或Java的性能。由于Crystal和Ruby的语法关联,将现有的Emacs Ruby模式稍加修改,就能为Crystal提供良好的...

    回滚:以capistrano样式回滚脚本应用程序(如PHP,Python,Ruby等)的角色

    4. **角色和变量**:为了提高代码复用和灵活性,我们可以创建一个名为“rollback”的Ansible角色。在这个角色中定义通用的任务和模板,然后在不同的Playbook中引用。通过使用变量来传递目标版本和相关配置,可以适应...

    Atom-language-crystal,原子晶体包。对水晶的贡献.zip

    5. **文档提示**:在编写代码时,为函数和方法提供相关的文档摘要,方便开发者快速了解其用途和参数。 6. **文件模板**:可能包括用于创建新Crystal项目或文件的预设模板,简化项目初始化过程。 7. **代码片段**:...

    dotnet-TobiasLtkesLiquid模板语言的NET移植

    它的语法简洁,支持条件语句、循环、变量和过滤器等,确保了模板的安全性,防止用户输入导致的XSS攻击。 2. **.NET开发**:.NET框架是由Microsoft开发的一种开发平台,支持多种编程语言,如C#、VB.NET、F#等,用于...

    100免费开源的Bootstrap4后台管理模板

    2. **预定义组件**:Bootstrap 提供了大量的预定义样式和组件,如按钮、表单、导航、模态框等,这使得开发者能够快速构建界面。 3. **定制化**:Bootstrap 4 允许开发者根据项目需求进行定制,如更改主题颜色、调整...

Global site tag (gtag.js) - Google Analytics