我写了一些代码,它接受一堆对象,在每个对象上使用一个实例方法,并将实例方法返回的值放在一个列表中。
object_list # list of objects
value_list = [object.method() for obj in object_list]
Run Code Online (Sandbox Code Playgroud)
我在代码的很多不同地方都需要这种结构,它们之间的唯一区别是实例方法method总是不同的。
如果方法是函数,那么使用这里解释的映射方法是没有问题的。可以用 做类似的事情exec,但是它不是很优雅,而且我不确定它在返回值方面如何工作:
def call_method(obj, method_name: str):
return exec("obj." + method_name + "()") # returns None
Run Code Online (Sandbox Code Playgroud)
有没有一种优雅的方法来重构这个问题的代码?
我看到如何动态地向Ruby中的实例添加方法def [instance].[methodname]; [...]; end.
但是,我有兴趣将另一个位置中存在的方法附加到给定实例.例如
def my_meth
puts self.foo
end
class MyCls
attr_accessor :foo
end
my_obj = MyCls.new
my_obj.my_meth
Run Code Online (Sandbox Code Playgroud)
我怎么能简单地附加my_meth到my_obj上面的代码的最后一行中的方法调用?
所以,简而言之.我有两节课.
package rpg;
public class Engine {
public void main(String args[]) {
Start.gameStart();
System.out.println(menuResult);
}
}
Run Code Online (Sandbox Code Playgroud)
和
package rpg;
public class Start {
int menuResult = 3;
public int gameStart()
{
return menuResult;
}
public int getMenuResult()
{
return Start.menuResult;
}
}
Run Code Online (Sandbox Code Playgroud)
它不断抛出错误'无法对非静态方法gameStart()进行静态引用.我确定我错过了一些简单但却找不到的东西.谢谢!
我有一个像这样定义的CoffeeScipt类
class Foo
a: 1
b: 2
main: ->
if a == 1
log(1)
log: (num) ->
console.log(num)
f = new Foo
f.main()
Run Code Online (Sandbox Code Playgroud)
它一直错误地说没有定义日志.我试过让它@log:也不起作用.我尝试制作->主要的a =>并且也没有用.如何从类本身调用实例方法?
我有一个具有实例方法的类,它返回一个哈希.我无法直接更改该类的代码,但我可以使用模块扩展它.我需要在方法的返回哈希中添加一些新键.像这样的东西:
class Processor
def process
{ a: 1 }
end
end
module ProcessorCustom
def process
super.merge(b: 2) # Not works :(
end
end
Processor.send :include, ProcessorCustom
processor = Processor.new
processor.process # returns { a: 1 }, not { a: 1, b: 2 }
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?谢谢.
来自3.数据模型:
\n\n\n实例方法
\n实例方法对象组合了类、类实例和任何\n可调用对象(通常是用户定义的\xef\xac\x81ned 函数)。
\n
如果是定义的话,它的含义是什么?
\n如果不是定义,那么“实例方法”的定义是什么?
\n“实例方法”与类的方法是同一概念吗?
\n既然有人提出了类方法和静态方法、绑定方法和非绑定方法,那么我澄清一下:
\n我理解类的方法可以是普通方法、类方法或静态方法。我了解通过类或其实例访问的类的方法可以被绑定或函数。我从未听说过“实例方法”。即使看了引用,我也不知道它是什么,也不确定它是否与普通方法、类方法、静态方法、绑定方法或函数相关。
\n