本帖最后由 RyanBern 于 2014-10-8 21:31 编辑
那就通俗地回答一下好了。
1.常量是一种特殊的变量,可以简单地理解为不能改变而固定的量。意思就是说你只能访问它而不能修改它的内容(只读属性)。因此,定义常量的时候必须指明初值,一个常量一旦被定义,就不能再改变它的内容。常量的作用通常是一些固定的参数,这样在参数发生改变时便于统一修改。关于作用域,这个说起来有些麻烦。常量有效的范围是在属于它被定义的层次上,在这以外无效(无法访问)。- CONST1 = 1
- module M
- CONST2 = 1
- class A
- CONST3 = 1
- end
- class B
- def fun
- c = CONST1 #合法
- a = CONST2 # 合法
- b = CONST3 # 非法,CONST3仅在A中有效
- b = A::CONST3 # 合法,利用作用域算符
- end
- end
- end
复制代码 这里有三个常量,CONST1在module M和class A层次上以及module M外面的那个层次上都有效,而CONST2 只在module M和class A上有效。CONST3只在class A内部有效。所以在B类内部访问CONST3非法,如果一定要访问,请利用作用域算符'::'
2.初始化就是使用构造方法initialize,通常在initialize执行的时候会指定初值。所有的对象在被定义的时候都要自动调用构造方法对其进行初始化。初始化后能否赋值取决于变量的性质。如果是常量就不能再次赋值。
3.这两个本质上是差不多的,'函数'是C/C++中的称呼,而'方法'更多用在面向对象的语言中。所以在这里就叫方法吧。现在阶段可以不区分他们。
4.Ruby中基本不需要声明,变量,类,方法可以直接使用,这和C/C++/Java等是不同的。
#include<iostream> using namespace std; extern int a; int main(){ cout << a; return 0; }
#include<iostream>
using namespace std;
extern int a;
int main(){
cout << a;
return 0;
}
在CPP中,第三行属于外部变量声明,作用就是相当于通知便是其·编译器有一个叫做'a'的外部变量,它在别处定义。这时变量a已经创建。
public class Test{ public static void main(String[] args){ int[] a; a = new int[5]; System.out.println("" + a[0]); } }
public class Test{
public static void main(String[] args){
int[] a;
a = new int[5];
System.out.println("" + a[0]);
}
}
Java中的对象也必须先声明再定义(实际上是一个空指针对象,没有实体),或者是声明的时候一并定义。
int f(int); int g(int); int f(int a){ if (a > 0) return 0; else return g(a); } int g(int a){ if (a <= 0) return 0; else return f(a); }
int f(int);
int g(int);
int f(int a){
if (a > 0) return 0;
else return g(a);
}
int g(int a){
if (a <= 0) return 0;
else return f(a);
}
在CPP中函数的声明有时候是为了实现两个函数互相调用。
但是Ruby中,变量使用的时候,无需声明。
5.已经说明,感觉没必要纠结这个事情。
6.条件以及循环不是函数,而是流程控制语句。 |