如何使用元编程定义类方法?
How to define class-methods with metaprogramming?
为什么以下不创建类方法?
class Movie
['upcoming','now_playing','top_rated'].each do |method|
define_method(method) do |page=1,api_key='xxxxxx'|
movies = get("/movie/#{method}",:query=>{page: page,api_key: api_key}).to_hash["results"].map{|m| Movie.new(m["id"])}
end
end
end
只需替换 define_method
with define_singleton_method
.
因为 define_method
创建实例方法,而不是 class 方法。
为什么以下不创建类方法?
class Movie
['upcoming','now_playing','top_rated'].each do |method|
define_method(method) do |page=1,api_key='xxxxxx'|
movies = get("/movie/#{method}",:query=>{page: page,api_key: api_key}).to_hash["results"].map{|m| Movie.new(m["id"])}
end
end
end
只需替换 define_method
with define_singleton_method
.
因为 define_method
创建实例方法,而不是 class 方法。