假设我有一些"MyClass"的扩展方法.我的问题是,组织/存储这些方法的最佳做法是什么?它们应该简单地放入"MyClassExtensions"Kotlin文件中吗?
我试图将这些方法封装在一个类中,但是在导入类之后我似乎无法弄清楚如何使用/访问扩展方法.
编辑:为了澄清,我没有要求帮助调用包含扩展方法的文件.我在询问存储/组织此类方法的最佳实践/方法.IE浏览器.它们应该简单地放入kotlin文件中,还是应该封装在一个类中.我来自Java背景,所以我习惯在课堂上存储东西.
我试图弄清楚如何在Kotlin中使用代数数据类型,所以我试图通过以下方式实现基本的BinaryTree类型.
sealed class Tree<T>{
class Node<T>(val left: Tree<T>, val right: Tree<T>): Tree<T>()
class Leaf<T>(val value: T): Tree<T>()
}
Run Code Online (Sandbox Code Playgroud)
这很好,让我构建以下树:
val myTree1: Tree<Int> = Node(Leaf(4), Leaf(2))
Run Code Online (Sandbox Code Playgroud)
但是我想要一个"空"类型,所以我可以表达以下内容:
val myTree1: Tree<Int> = Node(Node(Leaf(4), Leaf(3)), Empty)
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
sealed class Tree<T>{
class Node<T>(val left: Tree<T>, val right: Tree<T>): Tree<T>()
class Leaf<T>(val value: T): Tree<T>()
object Empty: Tree()
}
Run Code Online (Sandbox Code Playgroud)
虽然我得到的错误是在对象Empty:Tree()中期望Type参数,这实际上是非常合乎逻辑的.
我试过了
object Empty: Tree<T>()
Run Code Online (Sandbox Code Playgroud)
但它导致了"未解决的参考:T".作为最后的手段,我尝试写作
object Empty<T>: Tree<T>()
Run Code Online (Sandbox Code Playgroud)
但编译器说"不允许对象使用类型参数"
有没有办法在Kotlin表达这个?空应该是单身,这就是为什么它应该是一个对象.通过使它成为一个类,它解决了编译器的问题,但是我必须在它之后添加括号=> Empty().此外,它创建了不必要的对象,而它确实应该是一个单例值.
我对这个问题有任何帮助表示感谢.:)
我几天前开始学习Clojure并写了一个简单的函数来决定它的给定参数是否是素数.这是我的代码:
(defn is-prime [n]
(nil?
(some #(= (mod n %) 0)
(range 2 (java.lang.Math/sqrt n)))))
Run Code Online (Sandbox Code Playgroud)
我的问题是,当用'4'调用它时,该函数返回true.
(is-prime 4)=> true
我为调试目的编写了另一个函数,它列出了所有小于250的素数:
(defn primes [] (filter #(is-prime %) (range 1 250)))
Run Code Online (Sandbox Code Playgroud)
我已经在维基百科页面上查找了素数列表,发现除了数字'4'之外,其余的输出都是正确的.
(素数)=>(1 2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 121 127 131 137 139 149 151 157 163 167 169 173 179 181 191 …