我正在尝试创建一个使用Array data_array = [{project: 'proj', version: '1.1'}, {project: 'proj2', version: '1.11'}, {project: 'proj3', version: '1.2'}]
方法功能的方法。
想象一下,我有这个数据
data_array.natural_sort_by{|x| x[:version] }
我希望能够像这样调用方法:
data_array.sort_by{|x| MyModule.naturalize_str(x[:version]) }
发生的实际调用会达到以下目的:
Array.module_eval do
def natural_sort_by(&block)
sort_by{|x| Rearmed.naturalize_str(eval(block))}
end
end
这是我目前的工作代码:
char s[5] = {0};
size_t len = 0;
char dest[] = "abcdef.ghi";
char *p = strchr(dest, '.');
if(!p)
{
// error no '.'
return;
}
len = strlen(p);
if(len != sizeof(s)-1)
{
// More or less than 3 characters plus '.'
return;
}
strcpy(s, p);
我不太清楚如何实现这一点。
答案 0 :(得分:4)
class Array
def natural_sort_by
sort_by{|x| MyModule.naturalize_str(yield(x))}
end
end
或
class Array
def natural_sort_by &block
sort_by{|x| MyModule.naturalize_str(block.call(x))}
end
end
答案 1 :(得分:0)
散列键引用的类型不正确。请考虑将此x['version']
更改为x[:version]
以正确引用:version
密钥。