知道这里都是达人,但碰到的问题实在解决不了,只好冒昧来问,希望不要拍砖。 本人以后会经常骚扰各位老大的清净的。
看《Programming Ruby》中类方法一章如下代码:
class SongList
MAX_TIME = 5*60
def SongList.is_too_long(song)
return song.duration > MAX_TIME
end
end
song1=Song.new("Bicyclops","Fleck",260)
SongList.is_too_long(song1)
song2=Song.new("The Calling","Santana",468)
SongList.is_too_long(song2)
其中Song的定义如下:
class Song
@@plays = 0
def initialize(name,artist,duration)
@name=name
@artist=artist
@duration=duration
@plays=0
end
def play
@plays+=1
@@plays+=1
"This song: #{@plays} plays. Total #{@@plays} plays."
end
end
但是程序执行的时候,报:./song.rb:26:in `is_too_long': undefined method `duration' for #<Song:0x1f06dc3> (NoMethodError。 我知道可能是因为把类Song的实例作为形参传递出了问题,但是不知道怎么解决!
拜托不嫌我老大们给点儿指点吧!
分享到:
- 2007-11-03 13:03
- 浏览 1233
- 评论(3)
- 论坛回复 / 浏览 (3 / 2848)
- 查看更多
相关推荐
因此,当我们传递一个二维数组的名称给函数时,实际上是传递了一个指向该数组第一行首元素的一维指针。下面是一个简单的示例: ```cpp // 定义函数,通过指针接收二维数组 void sum2DArray(int (*arr)[3][3], int ...
C语言程序设计-编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/2!+1/4!+…+1/m!(m是偶数)
C语言程序设计-编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+…+1/(2m+1)例如:若m=9,则应输出:2.133256
实参是指在调用函数时传递给函数的具体值或变量。实参可以是常量、变量、表达式等。当函数被调用时,系统会根据实参的值来为形参分配内存空间,并将实参的值复制到形参中。需要注意的是,在函数调用过程中,实参的值...
Java 中 String 作为方法参数的传递机制详解 在 Java 语言中,String 类型的变量作为方法参数时,表现出了“非对象”的特性。下面将从实现原理的角度上阐述和剖析 String 作为方法参数的传递机制。 一、 String ...
数组作为方法的形参 目录 课程导入 进一步熟悉方法的定义 学会编写方法,初始化数组 学会编写方法,输出数组元素 目录 课程导入 学会编写方法,求数组元素平均值 学会编写方法,实现数组元素逆序存储 理解数组作为...
C语言中二维数组作为函数参数来传递有三种方法:形参给出第二维的长度、形参声明为指向数组的指针、形参声明为指针的指针。每种方法都有其特点和应用场景,我们需要根据具体情况选择合适的方法。
C语言程序设计-根据整型形参m,计算如下公式的值:y=sin(m)10;例如:若m=9,则应输出:4.121185.c
例如,下面的函数接受一个字符串变量作为参数,然后返回该字符串的长度: ```vb Function StringLength(strInput As String) As Integer StringLength = Len(strInput) End Function Dim myString As String ...
首先,接口作为形参意味着一个方法可以接受一个接口类型的对象作为输入。这种方式允许方法接收任何实现了该接口的类的对象,提供了更大的灵活性。以题目中的`JumppingDemo.java`为例,可能有一个方法接收实现了`...
给定程序中,函数fun的功能是:将形参s所指字符串中所有的ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。、 例如,形参s所指的字符串为:Abc@1×56*,...
- **接口作为形参**:如果方法需要一个接口作为参数,实际传递的是实现了该接口的类的对象。这种方法定义了方法的行为期望,即接收的对象必须实现接口定义的方法。 - **接口作为返回值**:返回接口类型意味着方法...
当我们将 SqList 类型的变量直接作为函数参数时,传递的是这个结构的一个副本,而不是原始变量的引用。例如,在查找操作中,函数 GetElem 接收一个 SqList 类型的参数 L,这时如果主函数中有变量 L1,调用 GetElem...
而引用作为形参时,它实际上是原始变量的一个别名,所以对引用的修改会影响到原始变量,避免了内存问题。 考虑以下代码示例: ```cpp void fun(int* b) { b = (int*)malloc(sizeof(int)*3); for(int i=0; i; i++)...
调用一个方法时,系统都会将参数、局部变量存储在一个称为堆栈的内存区域中,这个区域称为调用栈,或执行栈。它以先进后出的方式存储数据。一个方法调用结束,其相应的堆栈空间释放。 方法的值传递 m
在这个例子中,v和s是改变形参,是函数调用时将值传递给形参的形参。 既作前提又要改变的形参 既作前提又要改变的形参是函数定义时同时满足前提形参和改变形参的形参,例如,调用swap函数,交换主函数中的变量。 ...
函数形参是C++函数学习中一大重点,经常让初学者头疼,这里我们通过讲解两个实参值互换的例子讲解实参与形参间的关系,并比较普通变量、指针以及引用作形参时的区别,了解地址、名称以及值间的联系,体会指针、引用...
函数形参传递是 C 语言中的一个重要概念,需要开发者特别注意。 (1)Strcpy 函数的实现 Strcpy 函数是 C 语言中的一个重要函数,用于复制字符串。其实现为: ```c char *mystrcpy(char *des, const char *sur) { ...
面向对象程序设计,即c++语言。类,函数的形参、返回值为不同情况时,复制构造函数的调用。内有详细的注释说明。
Kotlin 中双冒号 :: 使用方法是一种特殊的语法结构,它可以将一个方法作为参数传递给另外一个方法。这种语法结构在实际开发中非常有用,本文将详细介绍 Kotlin 中双冒号 :: 使用方法的相关知识点。 首先,让我们来...