问题标签 [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.

0 投票
1 回答
3713 浏览

scala - Scala 特征和隐式转换混淆

当我在 Scala REPL (2.7.7) 上手动输入以下行时,它们会起作用:

但是,如果我尝试用它编译文件,我会收到以下错误:

为什么?

谢谢!

0 投票
6 回答
1141 浏览

c# - 在 .NET 中使用隐式转换替代多重继承

我有一种情况,我想让某种类型的对象能够用作两种不同的类型。如果“基本”类型之一是接口,这将不是问题,但在我的情况下,最好它们都是具体类型。

我正在考虑将一种基类型的方法和属性的副本添加到派生类型,并添加从派生类型到该基类型的隐式转换。然后,用户将能够通过直接使用重复的方法、将派生类型分配给基类型的变量或将其传递给采用基类型的方法来将派生类型视为基类型。

看起来这个解决方案很适合我的需求,但我有什么遗漏吗?是否存在这种情况不起作用,或者在使用 API 时可能会增加混乱而不是简单?

编辑:有关我的具体情况的更多详细信息:

这是为了将来重新设计指标在RightEdge中编写的方式,这是一个自动交易系统开发环境。价格数据表示为一系列条形图,这些条形图具有给定时间段(1 分钟、1 天等)的开盘价、最低价、最高价和收盘价。指标对一系列数据进行计算。一个简单指标的示例是移动平均指标,它给出了其输入的最近n 个值的移动平均值,其中n是用户指定的。移动平均线可以应用于收盘价,也可以应用于另一个指标的输出以使其平滑。

每次出现新柱时,指标都会为该柱计算其输出的新值。

大多数指标只有一个输出系列,但有时有多个输出(参见MACD)很方便,我想支持这一点。

因此,指标需要从“组件”类派生,该类具有在新数据进入时调用的方法。但是,对于只有一个输出系列(这是其中的大多数)的指标,这对他们来说会很好自己作为一个系列。这样,用户可以使用SMA.CurrentSMA 的当前值,而不必使用SMA.Output.Current. 同样,Indicator2.Input = Indicator1;Indicator2.Input = Indicator1.Output;. 这可能看起来差别不大,但我们的许多目标客户都不是专业的 .NET 开发人员,所以我想让这变得尽可能简单。

我的想法是对只有一个输出系列的指标进行从指标到其输出系列的隐式转换。

0 投票
1 回答
2778 浏览

java - 改变行为可能导致精度损失

在 Java 中,当你这样做时

您可能会丢失精度错误。但是为什么如果你这样做

没有错误吗?

0 投票
1 回答
338 浏览

java - 复合分配的自动(取消)装箱失败

由于复合赋值和递增/递减运算符中的隐式转换,以下编译:

并且由于自动装箱和自动拆箱,以下内容也可以编译:

然而,以下代码段中的最后一行给出了编译时错误:

谁能帮我弄清楚这里发生了什么?该byte b版本编译得很好,所以不应该Byte bb效仿并根据需要进行适当的装箱和拆箱以适应吗?


额外的问题

那么有没有办法让复合赋值运算符与左侧的 , 和 一起使用,或者它们Byte对于Character这些类型来说只是非法的(!!!) ?Short

0 投票
3 回答
421 浏览

mysql - 从 now() 隐式转换为日期字段

我对 MySQL 5.1 有疑问。datetime 数据类型不会隐式转换为匹配日期列。

此请求不返回任何使用 MySQL 5.1 的行,但适用于版本 5.0。如果我们使用CURDATE()而不是NOW()它在 MySQL 5.0 和 MySQL 5.1 中都可以工作。如果强制转换是显式的 ( CAST(NOW() AS DATE)),它也适用于 MySQL 5.0 和 MySQL 5.1。

该问题仅出现在从日期时间到日期的隐式转换中。没有人已经遇到过这个问题或知道如何解决这个问题吗?我知道使用 NOW() 而不是 CURTIME() 不是最好的,但这不是这里的问题。它目前在应用程序中使用,目的是避免重写所有内容。

谢谢!

0 投票
4 回答
4119 浏览

c# - C# 隐式转换

我目前正在开发一个应用程序,我需要从 SQL 数据库加载数据,然后将检索到的值分配给对象的属性。我通过使用反射来做到这一点,因为属性名和列名是相同的。但是,许多属性都使用自定义结构类型,它基本上是小数类型的货币包装器。我在我的结构中定义了一个隐式转换:

当我在代码中使用它时,这很好用。但是,当我有这个时:

它抛出一个 ArgumentException 说明它不能从 System.Decimal 转换为 Currency。我很困惑,因为它在任何其他情况下都可以正常工作。

0 投票
2 回答
3163 浏览

java - 是否保证 new Integer(i) == i 在 Java 中?

考虑以下代码段:

很明显,为什么最后一行总是会打印"false":我们正在使用==引用标识比较,并且new对象永远不会==已经存在的对象相关。

问题是关于前 3 行:这些比较是否保证在原语int上,Integer自动拆箱?是否存在原语会被自动装箱并执行参考身份比较的情况?(那将是false!)

0 投票
3 回答
7031 浏览

scala - 有人可以解释一下 Scala 中的隐式转换吗?

更具体地说, BigInt如何将 int 转换为 BigInt?

在源代码中它写道:

这段代码是如何调用的?

我可以理解这个其他示例:“日期文字”是如何工作的。

在。

被定义为:

intget 传递Dec带有intas 参数的消息时,系统会寻找另一个可以处理请求的方法,在这种情况下Dec(year:Int)

Q1。我对日期文字的理解是否正确?

Q2。它如何应用于 BigInt?

谢谢

0 投票
4 回答
512 浏览

c# - 在 C# 中安全和简单地访问显式接口成员

当我在 C# 中使用显式接口实现时,通常需要将对象强制转换为它的接口之一,以便访问该接口的成员。由于编译时类型检查提供了改进的可靠性和可维护性,我一直更喜欢使用隐式转换来执行此操作。我知道这样做的唯一方法涉及两行代码并将另一个变量引入范围。下面是一个例子:

因为编译器知道实现我假设隐式转换比显式转换更好,因为稍后对声明的更改MyType将导致编译错误而不是运行时错误。但是,我更喜欢显式强制转换语法的简单性,并且经常看到它在其他人的代码中使用。IMyTypeMyTypeInvalidCastException

我的问题有三个:

  • 您更喜欢上述哪个选项(以及为什么)?
  • 有一个更好的方法吗?
  • 当可以进行隐式转换时,关于执行显式转换的最佳实践是什么?
0 投票
2 回答
713 浏览

java - 多态性、自动装箱和隐式转换

你会认为 Java 中的自动装箱是一种多态形式吗?换句话说,你认为自动装箱扩展了 Java 的多态能力吗?

Scala 中的隐式转换怎么样?

我的观点是它们都是多态性的例子。这两个特性都允许以统一的方式处理不同数据类型的值。

我的同事不同意我的观点。谁是对的?