gpt4 book ai didi

scala - 制作经过 sanitizer 的字符串类型时的对称相等(使用 scala.Proxy)

转载 作者:行者123 更新时间:2023-12-04 02:18:29 25 4
gpt4 key购买 nike

我有一个 scala (2.10.4) 应用程序,其中电子邮件地址被传递了很多,我想实现一个在 IO 调用的抽象,以“清理”已经验证的电子邮件地址。

使用 scala.Proxy几乎是我想要的,但我遇到了不对称平等的问题。

    class SanitizedEmailAddress(s: String) extends Proxy with Ordered[SanitizedEmailAddress] {
val self: String = s.toLowerCase.trim

def compare(that: SanitizedEmailAddress) = self compareTo that.self
}

object SanitizedEmailAddress {
def apply(s: String) = new SanitizedEmailAddress(s)
implicit def sanitize(s: String): SanitizedEmailAddress = new SanitizedEmailAddress(s)
implicit def underlying(e: SanitizedEmailAddress): String = e.self
}

我想要
val sanitizedEmail = SanitizedEmailAddress("Blah@Blah.com")
val expected = "blah@blah.com"
assert(sanitizedEmail == expected) // => true
assert(expected == sanitizedEmail) // => true, but this currently returns false :(

或具有类似功能的东西。有没有什么不麻烦的方法来做到这一点?
    assert(sanitizedEmail.self == expected) // => true (but pretty bad, and someone will forget)
// can have a custom equality method and use the "pimp-my-lib" pattern on strings, but then we have to remember to use that method every time

谢谢你的帮助。

最佳答案

我认为这不可能,抱歉。

我也不确定想要那个是否正确。如果 String真正等于 SanitizedEmailAddress ,那么 SanitizedEmailAddress 是什么意思?包装实际上表示?

我认为拥有 String 会更一致无法与 SanitizedEmailAddress 相提并论,并要求用户在比较之前“清理”输入。

关于scala - 制作经过 sanitizer 的字符串类型时的对称相等(使用 scala.Proxy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com