如何使用自定义 impicit 装饰 Scala Int class 以转换为二进制字符串
How to decorate the Scala Int class with a custom impicit to convert to binary String
我想使用以下方法:
def toBinary(i : Int, digits: Int = 8) =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
并把它转成隐式转换以便"decorate" scala Int class, RichInt 所以实现如下:
3.toBinary //> res1: String = 00000011
3.toBinary(8) //> res1: String = 00000011
而不是调用toBinary(3)
我怎样才能做到这一点?
[编辑]
查看 link 后,我得到了以下有效的方法
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 专家,所以可能有更好的方法。
我想使用以下方法:
def toBinary(i : Int, digits: Int = 8) =
String.format("%" + digits + "s", i.toBinaryString).replace(' ', '0')
并把它转成隐式转换以便"decorate" scala Int class, RichInt 所以实现如下:
3.toBinary //> res1: String = 00000011
3.toBinary(8) //> res1: String = 00000011
而不是调用toBinary(3)
我怎样才能做到这一点?
[编辑] 查看 link 后,我得到了以下有效的方法
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 专家,所以可能有更好的方法。