从python入门ruby
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的更多相关文章
- 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript
常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...
- 谈谈PHP、Python与Ruby
假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成为一个高效工程师,推荐 Python. 假如你想让他爱上他的工作,推荐 Ruby. 语言的选择 编程语言非常重要,不要认为他们都图灵等价, ...
- 再谈PHP、Python与Ruby
一句话总结 简单地总结: 假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成为一个高效工程师,推荐 Python. 假如你想让他爱上他的工作,推荐 Ruby. 语言的选择 编程语言非常重要 ...
- [转][RabbitMQ+Python入门经典] 兔子和兔子窝
[转][RabbitMQ+Python入门经典] 兔子和兔子窝 http://blog.csdn.net/linvo/article/details/5750987 RabbitMQ作为一个工业级的消 ...
- day01 python入门之路
Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼 ...
- python入门学习:5.字典
python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典 在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...
- 【转】再谈PHP、Python与Ruby
原文链接:http://www.nowamagic.net/librarys/veda/detail/2504 一句话总结 简单地总结: 假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成 ...
- 第1章 python入门
1.1 python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开 ...
- Python 入门之Python简介
Python 入门之Python简介 1.Python简介: (1) Python的出生: python的创始人为吉多·范罗苏姆(Guido van Rossum)(中文名字:龟叔).1989年的 ...
随机推荐
- PAT 甲级 1020 Tree Traversals
https://pintia.cn/problem-sets/994805342720868352/problems/994805485033603072 Suppose that all the k ...
- rem和em学习笔记及CSS预处理
1.当元素A的字体单位是n rem时,它将根据根元素(html)的font-size的大小作为基准,比如 parent-div中的em-div的font-size为2rem,他的基准就是html的 ...
- PHP对象类型转换
其他数据类型转换为对象类型 其他数据类型转换为对象类型,得到的结果是:内置标准类(stdclass)的一个对象! 语法形式为: $obj1 = (object) 其他类型数据: 数组转换为对象:数 ...
- JMeter脚本强化之检查点
上一篇讲述了对脚本做参数化的两种方法,并对参数化设置结果做了简单的验证,就是通过添加断言.本篇将详细一点介绍怎么使用断言做文本检查,或者叫做设置检查点. 首先来看看下面的三个图,这三个图是用查看结果树 ...
- HDU4810_Wall Painting
题目很简单. 给你n个数,输出n个答案,第i个答案表示从n个数里取遍i个数的异或值的和. 其实每一个数最多也就32位,把所有的数分解,保存每一位总共有多少个1,最后要是这一位的异或结果为1,那么在所有 ...
- (转)slf4j+logback将日志输出到控制台
因为博主不允许转载...这边做链接记录 http://blog.csdn.net/gsycwh/article/details/52972946
- 多线程在javaweb中的应用
1.web应用中,要对某一个任务用多线程实现,最简单的代码格式是不是必须把要执行的代码放在run方法中? WEB服务器会帮你把每个访问请求开辟一个线程,你只要按照你所开发的框架,比如tomcat会让你 ...
- 【刷题】BZOJ 4650 [Noi2016]优秀的拆分
Description 如果一个字符串可以被拆分为 AABBAABB 的形式,其中 AA 和 BB 是任意非空字符串,则我们称该字符串的这种拆分是优秀的.例如,对于字符串 aabaabaa,如果令 A ...
- [AT2377] [agc014_e] Blue and Red Tree
题目链接 AtCoder:https://agc014.contest.atcoder.jp/tasks/agc014_e 洛谷:https://www.luogu.org/problemnew/sh ...
- Hive(四)hive函数与hive shell
一.hive函数 1.hive内置函数 (1)内容较多,见< Hive 官方文档> https://cwiki.apache.org/confluence/displ ...