Ruby基础语法

来源:互联网 发布:d3.js 难 编辑:程序博客网 时间:2024/06/04 19:02
原文地址:http://www.cnblogs.com/zidafone/p/5038666.html

学不同语言,常将它们的基础语法搞混,例如if后面有没有(),后面是then还是:还是{,结尾是end还是}。

这种事情毫无技术含量又毫无乐趣可言,但极大地影响流畅度,所以这次再看ruby语法,决定把基础语法记下来,方便以后查看。

内容如下,都是最基础的用法,需要时一看就明白。

复制代码
#参考:《Ruby完全自学手册》第三章、第四章#常量大写字母开头,变量小写字母开头CHANG_LIANG = 1bian_liang = 2bian_liang = "2"#弱类型##分支控制#ifif 2 > 1 then    #elsif 2>2 then    #else    #end#if后置puts "if后置" if 2 > 1#unlessunless 2 > 1 then    #else    #end#casecase 1+1when 2 then    #when 3 then    #else    #end##循环控制#whilewhile 1>2    #end#untiluntil 1<2    #end#forfor i in (1..3)   #end#foreach的另一种写法(1..3).each do |i|    #可以用break和next控制,next相当于其他语言的continueend##面向对象module MyModule#定义模块    #定义类    class MyClass#类名首字母大写        attr_accessor :myAttr#定义实例变量        def initialize            @myAttr2 = "@定义的实例变量"        end        public#访问控制级别public/protected/private        def myMethod#定义实例方法            puts "在实例方法中输出" + myAttr + @myAttr2        end    end    #继承    class MySubClass < MyClass    end    #定义模块方法    def moduleMethod        puts "MyModule的模块方法"    endend#模块定义的end#使用myClass = MyModule::MyClass.new#实例化对象myClass.myAttr = "实例变量的值"#为实例变量赋值myClass.myMethod#调用实例方法#动态添加方法def myClass.newMethod    puts "动态添加的方法"endmyClass.newMethod#加载另一个文件中声明的模块中的类load 'ruby_another_module.rb'anotherClass = AnotherModule::AnotherClass.new#另一个文件中声明的对象anotherClass.print#调用其方法#混入class UseMixin    include MyModule    extend MyModuleendUseMixin.new.moduleMethod#include语句的作用,成为类的实例方法UseMixin.moduleMethod#extend语句的作用,成为类的类方法##代码段def blockMethod#调用代码段的方法,其中yield表示运行代码段    yieldendblockMethod {puts "匿名代码段"}#带参数的代码段def blockMethodWithParam(arg, &b)#定义显式使用代码段的函数    b.call argendblock = Proc.new{|x| puts x}#定义非匿名代码段blockMethodWithParam("非匿名代码段", &block)#使用非匿名代码段blockMethodWithParam("也可以这样使用"){|x| puts x}##异常处理begin    #正常代码运行的地方rescue Error#相当于其他语言的catch    #进行一些调整    retry#重新尝试执行ensure    #相当于其他语言的finally,无论如何都会运行的地方end##基本类型#整数a=123_456#可以加下划线b=0b101010#二进制c=0123#八进制d=0xaa#十六进制e=?a#ascii码puts d#浮点数略#字符串str = "hello, world"str = %{你好, "world"}#方便含有引号的内容str[0] = ""puts str#符号略#区间(1..3).each{|a| puts a}#数组[1,2,3].each{|a| puts a}#字典map = {"键甲"=>"键甲的值", "键乙"=>"键乙的值"}puts map["键甲"]#正则表达式"ab12cd".scan(/\d/){|m| puts m}#正则表达式字面量puts /\d/.match("ab12cd")[0]#match方法

0 0
原创粉丝点击