满久之前看过ruby的语法,感觉很奇幻,或者说不赞同。ruby语法给我的感觉是有些东西在别的语言中只有一种写法,但到了ruby里却有很多中写法,当时的我还沉浸在Java所谓得语法设计的简单性的思维里,认为这些可有可无的东西只会增加语法的复杂度而无其他一点别的作用。
时过境迁的我在大面积使用js的时候,渐渐明白了为什么jquery可以设计出如此优雅的API,而ruby的优雅多于js很多,再回头看看Java,简直灰头土脸。
我无数次的抱怨为什么Java里我要写
if(somevalue != null){
...
}
而不是
if(someValue){
...
}
为什么我要写
if(someString == 'str1'){
...
}else if(someString == 'str2'){
...
}else if(someString == 'str3'){
...
}
而不是
switch(someString){
case str1:
...
case str2:
...
case str3:
...
default:
...
}
为什么我要写
button.addActionListner(new ActionListner(){
doActionPerform(ActionEvent event){
....
}
});
而不是
button.listner = function(event){
...
}
为什么我要写
Map<String, String> map = new HashMap<String, String>();
map.put('k1', 'v1');
map.put('k2', 'v2');
map.put('k3', 'v3');
而不是
Map map = {'k1':'v1', 'k2':'v2', 'k3':'v3'};
为什么我要写
class SomeClass{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
而不是
。。。
再回想ruby的语法,才明白当初ruby的设计者或许也有很多跟我类似的抱怨。事实上我对Java的抱怨远不止这么多。
此文是我再次看了ruby的语法之后的一点总结,只是记录了我觉得ruby语法中与众不同的地方,严重强调:
不可当作教程一类的东西。
希望这一系列的文章还能继续下去。
ruby是弱类型,所以变量不需要声明类型
somevalue = 'some string'
ruby里一切都是对象,连一个数值也是,所以你可以
12.5.class
ruby中用#来注释代码
ruby中用.来调用成员,类似与Java
ruby中可以用;来分隔语句,也可以用换行附分隔
ruby中代码缩进可有可无
ruby中调用无参方法可以不用()
ruby中有参方法调用可以放在()里,也可以不写()而直接跟在后面
所以可以写
print 'foobar'
ruby中以!结尾的方法是具有破坏性的方法,例如:
fox.upcase #返回大写字母
fox.upcase! #修改为大写字母并返回
ruby中以?结尾的方法表示疑问,返回true或false,例如:
fox.empty?
fox.is_a? String
ruby中这样实例化类:
car = Car.new
ruby中类的成员变量定义以@开头
@name='tuoxie'
ruby中Class级别的成员(有点象Java的静态变量,其实不一样)以@@开头
@@count = 0
ruby中定义类的成员函数以def开头
def start
...
end
ruby中方法的最后一个变量自动返回,当然也可以手动return
ruby中类的成员变量不能倍外部访问,要以方法的形式向外提供读写
ruby中get set的简单写法
class Car
@size = 0
def size=(s)
@size = s
end
def size
@size
end
end
这样调用
car.size = '2x3'
puts car.size
ruby中Class级别的方法声明
def self.jump
...
end
ruby中没有++,--
print不换行,puts换行
ruby中的数组
array = [1, 2, 3]
array = %w(red, blue, black) 等价于 array = ['red', 'blue', 'black']
array.delete 'black'
ruby中的键值对
map = {'k1'=>'v1', 'k2'=>'v2', 'k3'=>'v3'}
map.empty?
map.keys
map.values
ruby中的字符串
str = 'I\'m a big fish'
str = "An said, \"I'm a big fish\""
str = '%Q(An said, "I'm a bif fish")
str = "now is: #{Time.now}" # #{}可以替换里面的内容到字符串
"dog cat fish".gsub('cat', 'mimi') #replace
"dog cat fish".include?('dog')
"dog cat fish".slice(0, 3) #返回"dog"
ruby中的数字
23.class #返回 Fixnum,就是int
2.3.class #返回Float
23.integer? #true
0.zero?
34.to_f
3.4.to_i
ruby中的符号,没太明白是干吗的,但有写例子:
map = :k1 => 'v1', :k2=>'v2', :k3=>'v3 #定义一个键值对
"fox".to_sym #字符串转换为符号
:fox.to_s #同上相反
ruby中条件判断
#
if ...
...
end
#
if ...
...
else
...
end
#
if ...
...
elsif ...
...
end
#
unless ...
...
end
#
unless ...
...
else
...
end
#
puts 'foobar' if foo = bar
ruby的迭代
while ...
...
end
#
until ...
...
end
#
for .. in ..
...
end
#
ruby中的块
[...].each do |..|
...
end
#
{...}.each do |..=>..|
...
end
#
5.times{...}
写的很乱,仅供参考。
over!
本人新博客:tuoxie.me
分享到:
相关推荐
《From Java to Ruby》这本书是Java开发者转向Ruby语言的一份宝贵资源。它引导读者了解从传统的Java编程环境过渡到Ruby的动态世界时所遇到的概念差异和技术挑战。Ruby是一种灵活、简洁且富有表现力的编程语言,它...
标题 "从 Java 到 Ruby_ 每一个管理者应该知道的事情" 提示我们,这篇文章或书籍将探讨在 IT 管理领域从使用 Java 转向 Ruby 的关键点。Ruby 是一种动态类型、面向对象的编程语言,以其简洁、灵活的语法和强大的元...
- **语法差异**:Java 是一种静态类型语言,而 Ruby 是动态类型的。这导致了它们在编写代码时有着不同的语法结构和风格。 - **面向对象特性**:虽然两者都是面向对象的语言,但 Ruby 更加强调简洁性和灵活性,使得...
【Java与Ruby在Web开发上...虽然Ruby on Rails以快速开发和简洁语法著称,但对于追求更强大、更灵活的开发流程的Java开发者来说,Java提供了一条不同的高效开发路径。选择哪种语言取决于项目需求、团队技能和开发偏好。
### 从 Java 到 Ruby:每位管理者应知之事 #### 引言 随着技术的不断发展,编程语言也在不断地演进。对于很多企业来说,选择合适的技术栈是至关重要的一步。《从 Java 到 Ruby:每位管理者应知之事》这本书正是为了...
Ruby是一种动态、面向对象的脚本编程语言,以其简洁、优雅的语法和强大的元编程能力而受到程序员的喜爱。然而,由于其原生解释器是用C语言编写的,它在某些场景下可能无法充分利用现代多核处理器的性能,或者无法很...
在IT行业中,语言迁移是一个常见的现象,特别是在软件开发领域,开发者可能会从一种编程语言迁移到另一种,例如从Java转向Ruby。然而,这种迁移过程往往伴随着风险。本文主要探讨了Java和Ruby这两种语言在迁移过程中...
- **多种语言支持**:`Pygments` 支持包括 Java、Python、Ruby、JavaScript 在内的众多编程语言,以及 Markdown、LaTeX 和其他文本格式。 - **丰富的样式**:`Pygments` 提供多种预定义的样式表,可以改变颜色方案和...
这涉及到对Ruby语法的深入理解和对Java字节码的生成规则的精通。 2. **Ruby元编程支持**:Ruby的元编程能力是其魅力之一,Ruby2Java需要处理这些动态特性,确保它们在Java环境中仍能正常工作。 3. **JVM接口**:...
《基于Ruby+Java搜索引擎原理与实现》是一部深入探讨搜索引擎技术的书籍,虽然只涵盖了前三个章节,但已足以让我们对搜索引擎的基本运作有初步的理解。在本文中,我们将围绕Ruby和Java这两种编程语言如何应用于搜索...
Java以其稳定性和丰富的库适合大型企业级应用,而Ruby则以其高效开发速度和简洁语法吸引着初创公司和快速迭代的项目。重要的是理解每种语言的核心优势,而非陷入单一的语言崇拜,根据实际需求做出明智的决策。
练习的重点是Java和Ruby语法的比较。 您应该认识到异同并习惯它们。 使用spec文件夹中的RSpec规范测试您的实现。 克隆练习存储库,解决问题,然后重新签回解决方案。 一个成功的呼叫如下所示: spec binary_tree_...
在Android环境中运行Ruby,可以为开发者提供一个新的开发选项,特别是对于那些熟悉Ruby但不熟悉Java或者Kotlin的开发者来说。 Android Ruby解释器的实现通常是基于JRuby,这是一个用Java编写的Ruby解释器,能够与...
《Programming Ruby》被誉为是最好的Ruby编程书籍之一,它不仅详尽地介绍了Ruby语言的基础知识,还深入探讨了Ruby的核心概念和技术细节。这本书由David Thomas、Andy Hunt、Thomas A.EW Matthews和David Heinemeier ...
JRuby的优势在于它不仅支持Ruby语法,还能利用Java的生态系统,包括Java库、Java虚拟机(JVM)以及各种企业级服务。这使得开发者能够在Java项目中利用Ruby的简洁性和高效性,同时享受Java平台的稳定性和可扩展性。 ...
- **语法风格**:Ruby的语法更加灵活,允许更多的表达方式;而Python则强调代码的一致性和可读性。 - **社区文化**:Ruby社区更倾向于快速开发和敏捷实践;而Python社区则更加注重稳定性和代码质量。 - **应用场景**...