Ruby First

print()

puts()

p

  -Ks, -Ku

ruby 能够正常的计算算数表达式,8+4/2 = 10 而不是 6

注释

  # 行首,行中

  =begin和=end之间的都会视为注释

  没有行中的注释,注释掉一行中间的某些东西

控制

  if - then - end # then 可以省略

  if - then - else - end

  if - then - elsif - end

循环

  while - do - end #do 可以省略

times  # Ruby的一个特点

  是一个方法,{}中放将要被重复执行的代码

def - method body - end

require "fileName"

  ruby库中的文件可以直接引用

  其它的需要指明路径,如"./fileName"



Array

names = ["赵", "钱", "孙", "李"]  #逗号分隔,中括号

获取元素时,也是用[]中括号。如names[0],值为"赵"

数组的大小可以任意改变。(变小?不清楚)

数组元素的类型可以变换

数组的大小可以用.size获得

each语法:

array.each{|name|
  #do something on name
}

Hash

some_hash = {"key1"=>value1, "key2"=>value2,...}

获取元素: some_hash["some_key"]

hash 元素没有固定的顺序,所以只能通过key来获取其值

each语法:

hash.each{|key, value|
  #do something on key and value
}

重定向 >

ruby some_file.rb > somefile.suffix

if 的判断条件除了false,nil之外所有的东西都认为是true



ARGV[]数组,是用来保存传递进来的参数的数组

ARGV[0]指代传递给ruby程序的第一个参数,ARGV[1]指代传递给ruby程序的第二个参数,

字符串转换成数字——to_i

文件读取

读取整个文件

file = open(filename)
text = file.read
#do somthing
file.close

一点点的读

file = open(filename)
while text = file.gets do
    #do something
end
file.close


变量

局部变量  :  以小写字母或_开头的变量

全局变量  :  以$开头的变量(建议少使用)

实例变量  :  以@开头的变量

类变量     :  以@@开头的变量

虚拟变量  :  true, false, self等

常数:必须以大写字母开始(貌似是全部大写)

变量,方法命名:单词1_单词2_单词3

变量是否指向同一个对象,判断用equals?。

name = "testName"

name2 = name

name.equals?(name2) # true

对象值是否相等用,==

str = "foo"

str2 = "f" + "o" + "o"

str == str2 #true

== 和 eql?很像,除了在数字的比较上。

1 == 1.0 #true

1.eql?1.0 #false  注意写法



字符串是否为空的判断:str.empty?

当让一个方法的返回结果为真假值的时候,这个方法的命名最好后面加上一个?。这是Ruby的规则。

&&, ||, !

and, or, not

意义相同,优先级不同。下面的优先级低。

unless与if条件相反

只有怎样的时候,才执行。

case when# when后面可以写上很多值

case some_var
when "value1", "value2" then
  #do something
when "value3", "value4" then
  #do something
else
  #do somthing
end

when 还可以接收Numeric, String这种类型,用来判断some_var是不是该类型

print "a > b" if a > b

if a > b then
  print "a > b"
end

以上两端的意义是相同的。。。

===

当左边的值是数值或字符串,与==意义相同;

当左边是类,则判断是否属于该类;

当左边是正则表达式时,获取值所在的位置;



times:以下两种形式相同,从使用方法上来看,貌似是一种方法

number.times{ |i|  #可选
    #do something
}

number.times do |i| #可选
  #do something
end

times中可以追加|i|,这个i保存当前循环次数,但是不建议使用

for,其中没有|key|等,没有{}的写法

for i in begin_num .. end_num do
    #do something
end
# 遍历some_container中的对象for i in some_contain do
    #do something
end

没有++,只有 m += 1

each,方法,接受||变量,如hash中的|key, value, other|  #这里的other不会出错,但是没有值

something.each do |some|
  #do something
end
something.each {|some|
  #do something
}

until,跟unless挺像,只有满足条件了,才跳出循环

break: 跟JAVA一样

next:跟java的continue一样

redo:循环体上的游标不会向下执行,而是停留在原处。。。



方法的分类

实例方法:类的实例调用的方法

类方法:类名调用的方法,可以用.也可以用::。如Array.new,Array::new

  这是一种不区分类型对象的方法,只要是这个类的对象,执行结果都是一样的。

函数型方法:没有方法接受者的方法,如sin(24), print 10等等

  这是一种不会区分类型,对象的方法,也就是说任何类,任何对象调用这个方法都会实现相同的效果。

方法定义:

def method_name(param1, param2...)
    #do something
end

注意:没有{},没有do,()要紧跟着方法名称

给方法设定预定值:

def method_name(param1 = "Voctrals")
    #do something
end

这种情况下,如果没有给方法传递参数,那么Voctrals就作为参数传递给method_name。

如果有多个参数,那么预定值只能从右侧开始。。。因为方法的调用没有参数占位符!!!

方法的返回值:

1 用return返回结果

2 用return跳出方法体

3 如果没有return的话,方法的最后代码的返回值为结果返回给方法的调用者

4 如果方法没有返回值,那么方法的返回值为nil



创建一个类的新的对象,必须使用new关键字,如Array.new。

class方法,这个方法可以用来检查一个对象所属的类,如:"test".class。

instance_of?方法用来检查一个对象是不是参数指定类型的一个实例,如"string".instance_of? Array 返回值为true。"string".instance_of? Object 返回值为false。

  调用方法需要使用.,但是括号可以省略。。。

Object类,所有类的父类,它定义了好多方法

is_a?用来判断一个对象是不是参数指定的类型。如"string".instance_of? Array 返回值为true。"string".instance_of? Object 返回值为true。

时间: 2024-11-13 18:51:31

Ruby First的相关文章

在 mac 上搭建 ruby 环境

一.安装系统需要的包 安装Xcode开发工具,它将帮你安装好 Unix 环境需要的开发包 打开 App Store,搜索 Xcode,第一个就是,对了,有4个多G,网速如果不大好,就请先厕所哭会儿吧,慢慢等~ 二.安装 RVM RVM 是什么?不懂?没关系,你都在看这篇文章了,说了你也不懂,如果你懂也没必要看这个,日后你慢慢且懂~ 开始进入主题: (1)打开 mac 的终端,输入一串命令:curl -L https://get.rvm.io | bash -s stable (2)载入 RVM

HTML5 <ruby>注释标签

今天学了HTML5的ruby标签,觉得挺有趣的,来记录一下. ruby可以作注释标签,内部有rp和rt标签. <ruby>  标记定义注释或音标. <rp>    告诉那些不支持ruby元素的浏览器该如何显示. <rt>      标记定义对ruby注释的内容文本. 学完这个标签的第一反应就是,我有方法给那些不会读的日语单词做假名注释啦!!! 代码如下,来给一句日语做个小注释: <!DOCTYPE html> <html lang="en&q

RVM(ruby version manage)安装指南

一.安装需要3步gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \curl -sSL https://get.rvm.io | bash -s stable 退出后,重新登陆即可. RVM的基本命令: 列出已知的 Ruby 版本 rvm list known 安装一个 Ruby 版本 rvm install 2.3.3 --disable-binary 参考:htt

Ruby环境搭建——Windows

下载 rubyinstaller. 链接:http://rubyinstaller.org/downloads/.直接运行安装 注意需要在环境变量中添加: ..\ruby\bin 测试命令:ruby -v 安装rubygems. 链接:https://rubygems.org/ 自动:gem update --system 手动:cd C:\Downloads\rubygems-2.6.7 ; ruby setup.rb 安装gem包. gem install net-scp gem insta

教你ruby快速入门的方法

在学习新的编程语言的时候,我们一定要弄清楚一下几个问题: 语言的类型模型是什么? 强类型/弱类型,静态类型/动态类型 类型模型会改变问题的处理方式,控制语言的运行方式 语言的编程范型是什么? 面向对象.函数式.过程式等等 怎样和语言交互? 编译.解释 语言的判断结构(decision construct)和核心数据结构是什么? 哪些核心特性让这门语言与众不同? 因为每门编程语言都有自己的一套惯用方法,各有所长,各有缩短,通过学习不同的编程语言,你会明白,哪门语言最适宜解决自己当下关注的问题.下面

如何在ubuntu中搭建ruby开发环境

Ubuntu是一个以桌面应用为主的linux操作系统,在进行项目开发的时候,需要在ubuntu中安装ruby开发(http://www.maiziedu.com/course/ruby-px/)语言,主要是考虑到项目的高可变性,以及由此产生的高适应性,所以选择用ruby.跟Java相比,ruby的确比较灵活,能写出千变万化的代码. 但是,比较可悲的是,在windows7上面搭建ruby环境问题比较多.无论是基于cgywin,还是直接使用netbeans都不尽如人意. 因为想调整webserver

ruby入门知识:了解ruby历史及特性

今天给大家分享一下ruby基础教程(http://www.maiziedu.com/course/ruby-px/),主要介绍ruby的来源和ruby的特性,下面就先来看看ruby的简介吧: Ruby是一种纯粹的面向对象编程语言.它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年. 您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)的名字.在 Ruby 社区,松本也

ruby安装

Linux安装: apt-get install ruby 看官方推荐的: http://www.ruby-lang.org/en/documentation/installation/#apt Debian GNU/Linux and Ubuntu use the apt package manager. You can use it like this: $ sudo apt-get install ruby-full As of writing, the ruby-full package

Ruby Profiler详解之ruby-prof(I)

项目地址: ruby-prof 在上一篇 Ruby 中的 Profiling 工具中,我们列举了几种最常用的 Profiler,不过只是简单介绍,这一次详细介绍一下 ruby-prof 的使用方法. ruby-prof 是比较强大的,支持 cpu,内存使用,对象分配等等的性能分析,而且提供了很多友好的输出格式,不仅仅是有基于文字,html 的格式,还能输出 graphviz 格式的 dot 文件,以及适用与 KCacheGrind 的call tree格式, 其实这个格式是基于 Valgrind

Ruby探针的基本实现原理

李哲 - MAY 13, 2015 语言本身 Ruby语言支持语法级别的系统,框架,甚至语言本身的方法复写,一般叫做元编程(meta programming), 此基础之上还有一些术语为mixin,方法的动态定义,运行时类改写等等,这些技术和机制可以让语言本身就能实 现其他语言需要字节码才能实现的功能,例如探针需要hook HttpRequest中的request方法,就可以通过下面的方式实现: class HttpRequest def request_new puts 'before req