问题标签 [implicit-conversion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 关于Scala隐式转换非歧义规则的问题
任何人都可以用 Scala 隐式转换机制向我解释以下情况。有一个代码:
此代码打印“val”。但是当我评论第二行时:
代码打印“def”。
因此,在这种情况下,两种隐式转换(x 和 y)都是可能的。有一个非歧义规则- 只有在没有其他可能的转换插入时才插入隐式转换。根据这条规则,这段代码根本不应该被编译。但是代码已成功编译并执行。我不明白什么?
谢谢。
scala - 通过 Scala 中的隐式“装箱”原始类型的开销
假设我想要一个像 Java 这样的类Date
。它唯一的数据成员是一个 long 表示自 1970 年以来的毫秒数。
仅创建一个新的 Scala 类型会/是否有任何性能优势:
然后您可以使用隐式转换添加方法,就像对 int with 所做的那样RichInt
。这种将原始类型“装箱”到富类中是否涉及任何开销(类创建)?基本上你可以有一个静态方法
并让类型系统确定当它d addMonth 5
出现在您的代码中时必须应用它。
编辑
您通过编写创建的别名似乎type PrimitiveDate = Long
不是由 scala 编译器强制执行的。是创建一个适当的类,包含 Long,这是在 Scala 中创建强制类型的唯一方法吗?
您认为能够为原始类型创建强制类型别名有多大用处?
c# - 如何在 C# 中直接键入强制转换盒装结构?
我有一个结构命名空间,代表各种度量单位(米、英尺、英寸等)......总共有 12 个,由 T4 模板生成:)。
每个结构都带有隐式转换运算符以支持将值转换为任何其他测量值类型,因此以下语法是合法的:
更有趣的是,有一个名为Distance的包罗万象的类,它可以保存任何测量单位,也可以隐式转换为和测量值......
遵循 .NET 框架标准,所有字符串格式化和解析都由实现 ICustomFormatter 的外部 FormatProvider 处理。遗憾的是,这意味着值在传递给 Format 方法时会被装箱,并且 format 方法需要针对每个已知的测量类型测试对象,然后才能对其进行操作。在内部,Format 方法只是将测量值转换为距离值,所以问题来了......
问题:
是否有任何解决方案,或者这只是值类型的那些无法解决的缺点之一?
PS:我检查了这篇文章,虽然问题很相似,但这不是我要找的。
sql - mysql日期时间比较
例如,以下查询可以正常工作:
但这显然是在执行“字符串”比较——我想知道 MySQL 中是否内置了一个专门进行“日期时间”比较的函数。
c++ - 是否可以使用 cout 从用户定义的类型自动转换为 std::string?
在问题中,如果我在我的类中定义一个字符串运算符:
然后我使用它:
使用显式强制转换一切正常,但是如果我删除(字符串),编译器会说它需要在 std::string 中声明的强制转换运算符。它不应该自动转换我的类型吗?已解决:我正在重载 operator<< (ostream& os, const Literal& l)。
c# - 带有两个隐式转换的运算符函数 + 不起作用
我正在尝试将一些部分从 ginac (www.ginac.de) 移植到 C#。但是我遇到了这个:
正确的顺序应该是:隐式转换 symbol->basic->ex,然后 numeric->basic->ex,然后使用 ex operator+(ex,ex) 函数。
隐式转换函数和运算符函数的查找按什么顺序完成?有没有办法解决?
c++ - 为什么我不能向下转换指向模板参数中成员的指针?
如果我创建一个指向基成员的指针,我通常可以将其转换为指向派生成员的指针,但在下面的 Buzz 之类的模板中使用时则不行,因为第一个模板参数会影响第二个模板参数。我是在与编译器错误作斗争,还是标准真的要求这不起作用?
c# - C# 隐式转换为列表返回运行时错误
我有一个类似于以下使用内部列表的类:
当我尝试传递MyList<object>
给一个接受 的函数时List<object>
,我得到一个 InvalidCastException。为什么?
c++ - 为什么 std::string 不提供到 const char* 的转换?
这更多是一个政策或历史问题。为什么决定不为 std::string 提供 const char * 转换?是否担心有人会执行 printf("%s", s) 并相信它会自动转换?有没有关于这个问题的公开讨论?
c++ - 重载运算符中没有隐式转换
d1 + 4
有效,但4 + d1
即使 4 可以隐式转换为 GMan 也无效。为什么它们不相等?