`

啊啊啊,ruby语法真调皮啊。作为中青年程序员,ruby初学者,哥倍感压力啊。

    博客分类:
  • ruby
阅读更多
def self.up
  create_table :orders do |t|
    t.string :name
    t.text :address
    t.string :email
    t.string :pay_type, :limit => 10
    
    t.timestamps
  end
end


诶。。。看这意思好像":name"、":address"是参数吧?怎么要多个:呢,我看别的地方又没有:。略感纠结。

PS:NS真是个好小伙,刚才有菜鸟问题请教他,他不但耐心回答,还写了实例代码。真是好心人啊。
分享到:
评论
12 楼 抛出异常的爱 2011-01-16  
为了回贴
加个良好
11 楼 love182055084 2011-01-16  
好蛋疼的语法...
10 楼 kyfxbl 2011-01-13  
eclipse2008 写道
理解 Ruby Symbol
http://www.ibm.com/developerworks/cn/opensource/os-cn-rubysbl/index.html


谢谢哦,我去看看
9 楼 adventurelw 2011-01-12  
个人就是直接当成变量或者引用使用。
8 楼 eclipse2008 2011-01-12  
理解 Ruby Symbol
http://www.ibm.com/developerworks/cn/opensource/os-cn-rubysbl/index.html
7 楼 kyfxbl 2011-01-12  
femto:谢谢!
6 楼 kyfxbl 2011-01-12  
我正在看入门书,那个画个大镐头的。

你们不用投新手了吧,我标题都已经说了是初学者
5 楼 femto 2011-01-11  
但是,如果把method name先变成固定的数字
(我们打个比方,碰到头一个字符串,我们记录他
ID为1,碰到第二个不同的字符串,我们记录他ID为2,
这样以后在ruby kernel的实现里头,大部分地方
函数调用传来传去的时候,需要比较的仅仅是ID,也就是数字。
性能优化了不少。所以String会有个intern方法,
  (顺带一提的是,其他语言也有相应的查找method的方法,
比如C++的实现是查找虚函数表,java类似C++,因为方法表slot,
因为有编译步骤,而且是静态类型的,someObj.method1一定知道
是到方法表第几个slot去调用的。(编译的时候就知道了)
  但是Ruby不行,someObj.method1,你鬼知道someObj是什么类型的
子类啊。
  这是虚拟机里头的一个优化,易卡螺丝君发的那个链接说的比较简单,
而且是从外围说的,至于说的什么优化,性能,根本没那必要,到你调用
ruby语言的层级,根本不重要。
  然后随着时间的推移,1.8这个东西慢慢演变成了一个Symbol类。但是最早也
只是那个ID的简单wrap而已,不等于概念上再多出什么东西。然后到了1.8,1.9
这个ruby更成熟的时候,Symbol类慢慢发展成自己独立的类,也加入更多的概念和
方法,使之变成更加独立的一个类,Symbol就是Symbol。
  至于DHH写Rails时候,用symbol作为很多地方,像名称地方用symbol,当时只是
一个习惯,DHH先习惯采用了,以后就流传开了,大家都这样用。
  ps, 那个=>是hash里头key=>value这样的表达式。
4 楼 femto 2011-01-11  
LS的都说错了。
关于引入Symbol,应该
是1.6左右的事情把,如果我没记错的话,
当时的原因是,ruby内部的实现,大部分方法
的dispatch和查找需要优化,所以需要把字符串
变成数字来查找,
打个比方,一个Object,有几层派生类,很大的继承
体系,method表很大(反正我们知道Object,Kernel啥的
方法都很多),这也正常了。
  然后在这种情况下,查找方法,如果仅仅用String的比较
来查找,效率就会非常慢。(所谓查找方法,就是比如someObj.methoda
这样的方法dispatch)
3 楼 易卡螺丝君 2011-01-11  
ruby里string可变
:name 就是一个不可变的string

建议你先看看ruby的入门书

http://www.troubleshooters.com/codecorn/ruby/symbols.htm
2 楼 kyfxbl 2011-01-11  
除了这个区别以外,效果都一样吗?

我还看到:name=>"abc"

我勒个去的,请教LS的兄弟,这个=>又是什么?
1 楼 hideto 2011-01-11  
:name 不比 "name" 写起来效率高点?少一个字符呢

相关推荐

    Dot Net程序员新方向 Ruby核心语法入门

    Ruby的语法受到Perl和Smalltalk的影响,旨在提供一种更接近自然语言的编程体验,减少程序员在编写代码时的繁琐工作。自1996年发布1.0版本以来,Ruby虽然起初并不广为人知,但随着Rails框架的出现,它迅速获得了关注...

    .NET程序员带您走入Ruby核心语法之门

    标题中的".NET程序员带您走入Ruby核心语法之门"意味着本文将探讨.NET程序员为何对学习Ruby感兴趣,并深入解析Ruby语言的基础语法。Ruby是一种由日本人松本行弘(Matz)创造的编程语言,其设计初衷是为了提供一种比...

    ruby语法自整理

    注意,常量在Ruby中并不是完全不可变的,但修改常量会引发警告。 2. 变量内插 - 在双引号字符串内,可以使用`#{}`语法来插入变量的值,例如`puts "#{a} + #{b} = #{a+b}"`会输出`2 + 3 = 5`。 3. 注释 - 单行...

    Ruby编程,实用程序员指南Programming Ruby, The Pragmatic Programmer's Guide

    本书不仅适合初学者快速入门,也适合具有一定经验的开发者进阶学习。 ### 一、Ruby语言简介 #### 1.1 语言起源与发展 Ruby是由日本软件工程师松本行弘(Yukihiro Matsumoto)于1995年设计并开发的一种面向对象的脚本...

    ruby语法

    在Ruby中,一切皆为对象,这使得它在处理复杂逻辑时具有很高的灵活性。这篇博文链接()可能详细解释了Ruby的基本语法和特性,但由于没有实际内容,我将根据常见的Ruby语法知识进行阐述。 1. **变量**: Ruby有四种...

    ruby初学者教程(对初学者很有帮助)

    特殊方法是指那些在Ruby中具有特殊含义的方法,例如`initialize`、`==`等。 **3.5 类变量与类方法** 类变量是以`@@`开头的变量,可以在类的所有实例之间共享。类方法则是定义在类本身上的方法。 ```ruby class ...

    ruby trap 初学者使用

    - 常量在Ruby中是可变的,但改变常量值会引发警告,初学者应避免随意修改。 2. **符号(Symbol)**: - 符号是Ruby中的一种特殊数据类型,它们是不可变的,常用于哈希键和方法调用。理解符号与字符串的区别对于...

    ruby中文文档 初学者入门

    6. **块、Proc和Lambda**:Ruby中的块是代码块,可以作为参数传递给方法,Proc和Lambda是两种可调用的对象,它们可以捕获上下文,类似于函数。 7. **数组和哈希**:数组是有序的元素集合,可以通过索引访问;哈希是...

    ruby语法基础教程及Ruby教程中文版和安装文件

    Ruby中的变量不需要声明类型,它们的类型由赋值决定。变量分为局部变量(以小写字母或下划线开头)、实例变量(以`@`开头)和全局变量(以`$`开头)。 控制流程是编程中的关键部分。Ruby提供了条件语句(如`if`和`...

    09Ruby 语法.docx

    ### Ruby 语言基础知识点 #### 一、Ruby 语言简介 - **定义**:Ruby 是一种动态、面向对象的编程语言。 - **特点**: ...无论是对于初学者还是经验丰富的开发者来说,Ruby 都是一种值得学习的语言。

    Ruby语言教程对Ruby语法的总结展示Ruby语法的基本概念和用法.docx

    ### Ruby语言教程对Ruby语法的总结 #### 一、变量与数据类型 **特点:** - **动态类型:** Ruby是一种动态类型的语言,这意味着你无需为变量声明具体的数据类型。 - **变量命名规则:** 变量名必须以小写字母或...

    Ruby 基础语法 视频教程1

    在Ruby中,变量用于存储数据,并在程序的不同位置使用。Ruby有五种不同类型的变量: - **局部变量**(Local Variables):以小写字母或下划线开头,如`x = 10`。 - **实例变量**(Instance Variables):以`@`...

Global site tag (gtag.js) - Google Analytics