1、Ruby的函数可以不使用括号

def h(name)
puts "hello #{name}"
end h "jack"

2、python可以直接访问实例的属性,ruby不行,且Ruby的类名必须以大写字母开头

为什么python需要self:假如创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为Myclass.mehod(MyObject,arg1,arg2)

self在Python里不是关键字。self代表当前对象的地址。

>>> class greeter:
... def __init__(self,name):
... self.name=name
...
>>> g=greeter("jack")
>>> g.name
'jack'
>>>
class Greeter
def initialize(name)
@name = name
end
end
=> :initialize
g = Greeter.new("jack")

  无论是g.name还是g.@name都会报错。在Ruby中,实例变量是被隐藏起来的,但是可以通过为类添加访问属性的方法来获取属性值。把一个类打开然后改变它,会对以后生成的甚至是已经生成的对象产生即时效果。

 class Greeter
attr_accessor :name
end
=> nil
g.name
=> "jack"

  attr_accessor 会自动为我们定义两个新的函数, name 用来读取变量的值, name= 用来给变量赋值。在改变了类之后,我们之前创建的Greeter的实例g也被改变了,能够通过g.name访问name属性了

3、ruby并不是严格缩进的,下面这样的代码也可以运行

class MegaGreeter
attr_accessor :names def initialize(names = "World")
@names = names
end
end

4、ruby判断真值时,只有 false 和 nil 当做假值。其余一切皆为真(包括 0、 0.0、 "" 和 [])。

a=0
if a
puts "yes"
else
puts "no"
end =>yes

5、优雅的循环

@names.each do |name|
puts "Hello #{name}!"
end
for name in names:
print("Hello %s!"%name)

Ruby 的方法对比来看就更清爽,所有的清理工作都被隐藏在 each 函数里了, 您只需要告诉它您想做什么。在 each 函数内部,实际上会去自动调用 yield "Albert"yield "Brenda"yield "Charles",等等。

6、ruby不限制函数所支持的参数类别。 如果有人写了一个新的类,只要它像其他列表类一样回应 join 这个函数, 那它就可以被相应的其他函数所使用。

if @names.respond_to?("join")
if callable(getattr(greeter,"join",None)):

7、“如果这是启动脚本”

if __name__ == '__main__':
if __FILE__ == $0

8、ruby的表达式和语句没有区别。任何表达方法都有返回值

9、类似 Python, 从 Ruby 2.0 开始,可以使用关键字参数定义方法

10、nil is a object

  def test_nil_is_an_object
assert_equal true, nil.is_a?(Object), "Unlike NULL in other languages.
But, like None in python."
end

从python入门ruby的更多相关文章

  1. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript

    常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...

  2. 谈谈PHP、Python与Ruby

    假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成为一个高效工程师,推荐 Python. 假如你想让他爱上他的工作,推荐 Ruby. 语言的选择 编程语言非常重要,不要认为他们都图灵等价, ...

  3. 再谈PHP、Python与Ruby

    一句话总结 简单地总结: 假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成为一个高效工程师,推荐 Python. 假如你想让他爱上他的工作,推荐 Ruby. 语言的选择 编程语言非常重要 ...

  4. [转][RabbitMQ+Python入门经典] 兔子和兔子窝

    [转][RabbitMQ+Python入门经典] 兔子和兔子窝 http://blog.csdn.net/linvo/article/details/5750987 RabbitMQ作为一个工业级的消 ...

  5. day01 python入门之路

    Python之路,Day1 - Python基础1   本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼 ...

  6. python入门学习:5.字典

    python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典   在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...

  7. 【转】再谈PHP、Python与Ruby

    原文链接:http://www.nowamagic.net/librarys/veda/detail/2504 一句话总结 简单地总结: 假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成 ...

  8. 第1章 python入门

    1.1 python的出生与应用   python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开 ...

  9. Python 入门之Python简介

    Python 入门之Python简介 1.Python简介: (1) Python的出生: ​ python的创始人为吉多·范罗苏姆(Guido van Rossum)(中文名字:龟叔).1989年的 ...

随机推荐

  1. PAT 甲级 1027 Colors in Mars

    https://pintia.cn/problem-sets/994805342720868352/problems/994805470349344768 People in Mars represe ...

  2. 程序员必看电影:Java 4-ever

    http://blog.csdn.net/zdwzzu2006/article/details/5863068

  3. [翻译]Android官方文档 - 通知(Notifications)

    翻译的好辛苦,有些地方也不太理解什么意思,如果有误,还请大神指正. 官方文档地址:http://developer.android.com/guide/topics/ui/notifiers/noti ...

  4. 【经典数据结构】Trie

    在计算机科学中,trie,又称前缀树或字典树,是一种有种树,用于保存关联数组,其中的键通常是字符串.与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前 ...

  5. 通过父类定位到子类 先将父类当作一个dom

    通过父类定位到子类 先将父类当作一个dom 在此基础上在定位子类

  6. CF464C-Substitutes in Number

    题意 开始给出一个长为\(n\)的数字串,有\(m\)次操作按顺序执行,每次把当前数字串中的某一个数码替换成一个数字串\(t\)(可以为空或多位),最后问操作结束后的数字串十进制下模\(10^9+7\ ...

  7. 插件-监控页面加载之loading

    查看效果点https://icedjuice.github.io/plug-in/loading/loading.html 简单易用的loading插件,该插件并不是真正的监控页面的资源加载过程,而是 ...

  8. [codeforces464D]World of Darkraft - 2 概率期望

    D. World of Darkraft - 2 time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  9. 【刷题】BZOJ 3172 [Tjoi2013]单词

    Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N ...

  10. CF891E [数学题]

    1.答案=初始乘积-最终乘积的期望.然后直接dp+ntt是O(nklogk) 2.考虑展开式子ans=sum(a[i]-b[i]),大概感受一下未知数个数相同的项系数相同,问题在于如何求系数 3.没思 ...