首发:
学不同语言,常将它们的基础语法搞混,例如if后面有没有(),后面是then还是:还是{,结尾是end还是}……
这种事情毫无技术含量又毫无乐趣可言,但极大地影响流畅度,所以这次再看ruby语法,决定把基础语法记下来,方便以后查看。
代码放到了,目前只有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方法
长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:,QQ:908789432。