如何使用自定义impicit来修饰Scala Int类以将其转换为二进制字符串
我想使用以下方法:如何使用自定义impicit来修饰Scala Int类以将其转换为二进制字符串,scala,int,implicit,Scala,Int,Implicit,我想使用以下方法: def toBinary(i : Int, digits: Int = 8) = String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0') 并将其转换为隐式转换,以“修饰”scala Int类RichInt,从而实现以下功能: 3.toBinary //> res1: String = 00000011 3.toBinary(8) //>
def toBinary(i : Int, digits: Int = 8) =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
并将其转换为隐式转换,以“修饰”scala Int类RichInt,从而实现以下功能:
3.toBinary //> res1: String = 00000011
3.toBinary(8) //> res1: String = 00000011
而不是调用toBinary(3)
我如何才能做到这一点?
[编辑]
在看了链接后,我得到了以下的工作
implicit class ToBinaryString(i :Int ) {
def toBinary(digits: Int = 8) =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
}
3.toBinary(8) //> res2: String = 00000011
如果没有默认参数,我无法使用它,我希望能够编写3.toBinary
object A extends App {
implicit class RichInt(i: Int) {
def toBinary(digits: Int = 8): String =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
}
println(3.toBinary(6))
}
印刷品:
000011
//编辑
如果要调用3.toBinary而不使用括号,我想您必须提供一个没有参数的方法:
object A extends App {
implicit class RichInt(i: Int) {
def toBinary(digits: Int): String =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
def toBinary: String = toBinary(8)
}
println(3.toBinary)
println(3.toBinary(6))
}
这对我来说很有用,但我不是Scala专家,所以可能有更好的方法
印刷品:
000011
//编辑
如果要调用3.toBinary而不使用括号,我想您必须提供一个没有参数的方法:
object A extends App {
implicit class RichInt(i: Int) {
def toBinary(digits: Int): String =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
def toBinary: String = toBinary(8)
}
println(3.toBinary)
println(3.toBinary(6))
}
这一个适合我,但我不是Scala专家,所以可能有更好的方法来实现这一点。可能的重复项应该能够与默认参数
3.toBinary()一起使用。
。如果要跳过括号,则必须添加另一个方法def toBinary=toBinary(8)
,并从第一个方法中删除默认参数。可能的重复项应能够与默认参数3.toBinary()一起使用。如果要跳过括号,则必须添加另一个方法def toBinary=toBinary(8)
,并从第一个方法中删除默认参数。我制定了相同的解决方案,请查看我在编辑器上的评论。你一定在我回答后几秒钟编辑了你的帖子:)DRY:def toBinary=toBinary(8)
是的。这只是一个例子,但我应该做得对:)我想出了同样的解决方案检查我的评论。你一定在我回答后几秒钟编辑了你的帖子:)DRY:def toBinary=toBinary(8)
是的。这只是一个例子,但我应该做对:)