如何在scala中获取方法列表
发布时间:2020-12-16 09:43:51 所属栏目:安全 来源:网络整理
导读:在像Python和ruby这样的语言中,要求语言它的字符串类支持哪些与索引相关的方法(哪些方法的名称包含单词“index”),你可以做 “”.methods.sort.grep /index/i 在java中 List results = new ArrayList(); Method[] methods = String.class.getMethods(); fo
在像Python和ruby这样的语言中,要求语言它的字符串类支持哪些与索引相关的方法(哪些方法的名称包含单词“index”),你可以做
“”.methods.sort.grep /index/i 在java中 List results = new ArrayList(); Method[] methods = String.class.getMethods(); for (int i = 0; i < methods.length; i++) { Method m = methods[i]; if (m.getName().toLowerCase().indexOf(“index”) != -1) { results.add(m.getName()); } } String[] names = (String[]) results.toArray(); Arrays.sort(names); return names; 你如何在Scala中做同样的事情? 解决方法
好奇没有人尝试过更直接的翻译:
"" .getClass.getMethods.map(_.getName) // methods .sorted // sort .filter(_ matches "(?i).*index.*") // grep /index/i 所以,一些随意的想法。 >“方法”和上面的环节之间的区别是惊人的,但没有人说过Java的力量。 所以,我们可以做些什么呢? implicit def toMethods(obj: AnyRef) = new { def methods = obj.getClass.getMethods.map(_.getName) } implicit def toGrep[T <% Traversable[String]](coll: T) = new { def grep(pattern: String) = coll filter (pattern.r.findFirstIn(_) != None) def grep(pattern: String,flags: String) = { val regex = ("(?"+flags+")"+pattern).r coll filter (regex.findFirstIn(_) != None) } } 现在这是可能的: "".methods.sorted grep ("index","i") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |