1、强类型,即不会自动进行类型转换,而C/C++为弱类型。

# Ruby
i = 1
puts "Value is " + i # TypeError: can't convert Fixnum into String
# from (irb):2:in `+'
# from (irb):2
2、完全地OO(Object-Oriented面向对象),所有方法都是对对象,无全局函数。
strlen(“test”)   # error
“test”.length
3、变量:以小写开头。 my_composer = ‘Beethoven’
4、类型转换: puts 2.to_s + ‘5’ #25
5、常量:以大写开头。 Foo = 1
6、空值nil。 
7、字符串符号symbols,相同符号不会重复创建对象。 puts :foobar.object_id
8、队列Array。 
a = [1, ‘cat’, 3.14 ] 
puts a.inspect # 输出 [1, ‘cat’, 3.14]
# inspect将对象转换成适合阅读的字符串
# 读取没有设定的元素,则值为nil
a = [‘Ruby’, ‘Python’]
a.each do |ele|
  puts ‘I love ’ + ele + ‘!’
end
# I love Ruby!
# I love Python!
9、Hash类似C++的map和python的Dict,使用Key-Value结构。通常使用Symbol当作Key:
config = { :foo => 123, :bar => 456 }
config = { for: 123, bar:456 } # 和上面等价,Ruby 1.9新语法
puts config[:foo]  #123
puts config[“nothing”]  #nil
10、else if写成elsif:
total = 26000

if total > 100000
puts "large account"
elsif total > 25000
puts "medium account"
else
puts "small account"
end
puts “greater than ten” if total > 10 # 适合执行的if语句只有一行的情况
11、Case结构,case when:
case name
when "John"
puts "Howdy John!"
when "Ryan"
puts "Whatz up Ryan!"
else
puts "Hi #{name}!"
end
12、while,until,loop,next,break和C++语法不同,不过很少用,实际用迭代器。
13、正则表达式:
# 找出手机号码
phone = "123-456-7890"
if phone =~ /(\d{3})-(\d{3})-(\d{4})/
ext = $1
city = $2
num = $3
end
14、?与!的惯用法:方法名称用?标识返回Boolean值,用!标识有副作用,如array.sort!
15、自定义类型:
class Person # 大写开头的常數
 puts “running when class loaded” # 载入该类型时执行,主要用来做Meta-programming
 @@sname = ‘Class var’# 类变量

def initialize(name) # 构建函数
@name = name # 对象变量
end def say(word)
puts "#{word}, #{@name}" # 字符串相加
end end p1 = Person.new("ihower")
p2 = Person.new("ihover")
16、类继承,使用<符号。
17、Module和Class类似,但是不能用new来创建,其用途一是可以当作Namespace,更重要的功能是Mixins,将一个Module混入类型中,这样这个类型就拥有了此Module的方法,多重继承的问题也通过Module来解决。

首先是debug.rb

module Debug
def who_am_i?
puts "#{self.class.name}: #{self.inspect}"
end
end

然后是foobar.rb

require "./debug"
class Foo
include Debug # 这个动作叫做 Mixin
end class Bar
include Debug
end f = Foo.new
b = Bar.new
f.who_am_i? # 输出 Foo: #<Foo:0x00000102829170>
b.who_am_i? # 输出 Bar: #<Bar:0x00000102825b88>
18、异常处理,使用rescue、ensure:
begin
puts 10 / 0 # 这会抛出 ZeroDivisionError 的异常
rescue => e
puts e.class # 如果发生异常会执行 rescue 这一段
ensure
# 无论有沒有发生异常,ensure 这一段都一定会执行
end
# 输出 ZeroDivisionError
其它高阶功能如Meta-programming暂不考虑。
参考转载文档:https://ihower.tw/rails4/

ruby注意点的更多相关文章

  1. 安装cocoapods遇到两大坑-Ruby版本升级和Podfile的配置

    今天安装cocoapods #移除原有ruby源 $ gem sources --remove https://rubygems.org/ #使用可用的淘宝网 $ gem sources -a htt ...

  2. Unable to download data from http://ruby.taobao.org/ & don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

    安装cocoapods,记录两个问题! 1.镜像已经替换成了 http://ruby.taobao.org/, 还是不能不能安装cocoapods, 报错:Unable to download dat ...

  3. 安装了ruby后怎么安装sass

    在命令行中输入 ruby -v 查看版本号 先移除默认的https://rubygems.org源,命令为gem sources --remove https://rubygems.org/,按回车 ...

  4. ruby 基础知识(一)

    突然今天发现一大神的博客:http://www.cnblogs.com/jackluo/archive/2013/01/22/2871655.html    相信初学者会受益颇多 ruby  参考文档 ...

  5. ruby 基础知识(二)

    ruby  中的动态方法 http://singleant.iteye.com/blog/1680382 Rails 大量使用了符号(symbol).符号看上去很像变量名,不过以冒号作为前缀.符号的例 ...

  6. Ruby安装Scss

    Ruby安装Scss 引言 已经许久不写HTML了,今天有点以前的东西要改.但是刚装的Windows10,已经没有以前的Web开发环境了.只好重新安装. 结果Webstorm装好后配置Scss出现错误 ...

  7. fzf by ruby

    fzf by ruby */--> fzf by ruby 1 github地址 https://github.com/junegunn/fzf 2 简介 软件通过匿名管道和grep扩展了bas ...

  8. The Safe Navigation Operator (&.) in Ruby

    The most interesting addition to Ruby 2.3.0 is the Safe Navigation Operator(&.). A similar opera ...

  9. Ruby on Rails 创建https应用

    1. 创建证书请求文件条件:私钥+证书签名请求+opensslyum install -y opensslmkdir /root/ssl/ && cd /root/ssl/openss ...

  10. Ruby数组

    Ruby数组是有序的,任何对象的整数索引的集合.每个数组中的元素相关联,并提取到的一个索引.下标与C或Java相似,从0开始.负数索引假设数组末尾,也就是说-1表示最后一个元素的数组索引,-2是数组中 ...

随机推荐

  1. IE hack中主要的几个

    _: IE6; #*+.: IE6 IE7; black\0: IE8; black\9: IE所有; @media screen\9 { … }: IE6 IE7; @media \0screen\ ...

  2. HTML5 Input 类型

    浏览器支持 Input type IE Firefox Opera Chrome Safari email No 4.0 9.0 10.0 No url No 4.0 9.0 10.0 No numb ...

  3. 一些变态的PHP一句话后门收集

    这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用404页面隐藏PHP小马 ...

  4. Maven下载安装

    1.maven下载地址 https://maven.apache.org/配置:M2_HOME D:\tool\mvn\apache-maven-3.3.9 PATH %M2_HOME%/bin3.命 ...

  5. springmvc源码分析

    Spring MVC源码分析--初始化过程 标签: springmvcconstructioniocclass 2012-09-09 21:32 26578人阅读 评论(3) 收藏 举报 版权声明:本 ...

  6. 平方和和立方和_hdu2007

    #include <stdio.h>int main(){ int a, b, m , n, t;  while( scanf("%d %d", &a, &am ...

  7. 【iCore3 双核心板_FPGA】例程六:计数器实验——计数器使用

    实验指导书及代码包下载: http://pan.baidu.com/s/1kUiAAt5 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  8. SQL优化 1

    SQL_ID:fvdwtfv18yy0m 先看看sql的预估执行计划 select * from table(dbms_xplan.display_awr('fvdwtfv18yy0m')); sql ...

  9. angular+ckeditor最后上传的最后一张图片不会被添加(bug)

    做法一: angularJs+ckeditor 一.页面 <textarea ckeditor required name="topicContent" ng-model=& ...

  10. DS实验题 Order 已知父节点和中序遍历求前、后序

    题目: 思路: 这题是比较典型的树的遍历问题,思路就是将中序遍历作为位置的判断依据,假设有个节点A和它的父亲Afa,那么如果A和Afa的顺序在中序遍历中是先A后Afa,则A是Afa的左儿子,否则是右儿 ...