问题标签 [implicit-typing]
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 - 使用案例类应用:在 T 的范围内没有类型类 A 的成员
由于隐式转换,我无法编译函数。我有以下基本案例类:
然后在一个对象中我有以下功能
上面的代码可以正确编译,没有问题。现在我想创建一个函数来执行案例中的语句序列。所以我创建了以下辅助函数:
现在我尝试这样使用:
我得到了错误:
我已经戳了几个小时了,但没有运气。我认为这里的问题在于C[T]
(第三个代码片段)的定义。也许我必须在第一个参数的定义中添加一些东西f
,这是一个函数,以便T
正确确定隐式。
谁能告诉我如何纠正或进一步诊断这个问题?
TIA
scala - 如何重新参数化集合类型
我想定义一个通用集合的转换。
这抛出:
我必须在函数定义中声明S
为参数化。GenIterable
我想指定一个输出类型“无论创建的集合类型是什么S
,用参数化的除外[(T,Int)]
”,这样我就可以保证得到相同的集合类型,而不仅仅是GenIterable
.
我怎样才能做到这一点?
c# - 在类初始值设定项中使用隐式类型数组
考虑以下:
我很想知道发生了什么。ListProp 设置器不会被调用。我们尝试分配 ArrayProp 的编译器错误表明,在内部,此分配将尝试调用“添加”方法。
PS:显然,代码可以这样工作:ArrayProp = new int[] { 4, 5, 6 }
但这并不能满足我的好奇心:)
scala - 从返回类型推断泛型隐式参数的类型
说我有一个像这样的简单课程
在声明 val 时f2
,编译器能够推断出函数隐式参数的类型f
是Int
因为该类型与结果类型相同,结果类型需要与 value 的类型相匹配f2
,即Int
.
然而,把一个Ordering[A]
混合在一起:
导致此编译错误:
模棱两可的隐含值:类型 => scala.collection.generic.CanBuildFrom[String,Char,String] 的对象 Predef 中的值 StringCanBuildFrom 和类型 [A]=> <:<[A,A] 的对象 Predef 中的方法 $conforms匹配预期类型 A
如果我在调用时添加类型信息f()
,它会编译:
首先,我遇到了隐式排序的情况,我认为这与 Scala 推断从左到右有关;我认为它无法先匹配返回类型,然后推断f
. 但是后来我在没有隐式排序的情况下尝试了这种情况,并看到它有效 - 它推断f
必须参数化,Int
因为返回类型必须是 an Int
(因为f2
是 an Int
)。
请注意,如果我们删除implicit a: A
并仅保留 Ordering 隐式参数,则错误仍然存在,但变为
从对象 Ordering 中的方法 Tuple9 开始的类型 Ordering[A] 的发散隐式扩展。
同样,添加类型参数使其变得有val f2: Int = f[Int]()
帮助。
这是怎么回事?为什么编译器可以推断该参数A
必须是一个Int
,但不能推断该参数Ordering[A]
必须是一个Ordering[Int]
?
scala - “无法证明 Object <:< Try[U]”在展平函数中
我有一个Map
可能拥有相同类型的嵌套地图。这些嵌套地图中的每一个都有对外部地图的引用。
我已经定义了一个findValue
查看当前地图的方法,如果它没有找到任何东西,它会转到它的父级,依此类推,直到到达null
最外层的父级SymbolTable
。
我已将此行为放入 aTry
中,以便我可以匹配Success
and Failure
; 但是,为了避免出现 a-la 类型,Try[Try[Try[ ... Try[TableVaue]... ]]]
我将输出变平。
在尝试打电话时flatten
,我收到以下错误:Cannot prove that Object <:< Try[U]
以下是相关的代码:
所以我的问题是:如何在不对代码进行任何重大重构的情况下完成这项工作?
groovy - Groovy 中隐式转换(到布尔值)的好处
我从静态类型语言来到 Groovy。而且我不明白隐式转换为布尔有什么好处?我认为这个功能很有争议而不是有用。
c# - C#:如何在 IF 块内定义隐式类型变量并在外部使用
我想做这样的事情:
问题是我不能这样做,因为您显然不能在不先声明隐式变量的情况下定义它,也不能在声明隐式变量后重新声明它。
假设我不知道数据的返回类型(隐式类型变量的整个点),那么合适的方法是什么?
编辑:
如果您的类型定义明确,那么下面的第一个答案效果很好,但是这样的事情呢?
recursion - F# 隐式类型在简单递归时阻塞
当我在 F# 中定义递归函数时:
...一切都很好。当我试图避免“空列表”问题时:
......我被大喊大叫:
我在这里想念什么?
generics - 不同类型的表达式中的 F# 隐式泛型函数参数
我有一个实用程序函数,它将记录错误消息(包括字符串格式)与引发异常(raise
现有异常或failwith
使用格式化的错误消息调用,类似于下面的 logAndFailWithf 函数(尽管实际上它使用日志框架,不写入文本文件):
如果直接调用此函数,则可以正常工作,如以下简单示例所示:
然而,在现实世界的场景中,日志函数被传递给另一个函数,当它遇到异常时使用它来记录和抛出异常,类似于以下内容:
在这种情况下,编译器会在第二个 let 绑定 ( ) 上报告错误,let y = ...
并显示以下消息:
这似乎发生在与 log 函数的第一次使用不具有相同类型的表达式中任何 log 函数的使用(在上面的示例中,int64
when bindingy
而不是int
when binding x
),我无法找到一种表达log
参数类型的方法,该方法既与函数的签名相匹配,logAndFailWithf
又在同一函数中用于不同类型的表达式时起作用。
如何将此隐式泛型函数作为参数传递给其他函数,以便可以在不同类型的表达式中调用它?
swift - 你能在 Swift 中同时定义和实例化隐式类型吗?
只是在思考如何构建一些基于层次结构自动生成键的 UserDefaults 的语言。这让我想知道......是否可以像这样同时定义和实例化一个类型?
注意:我不能使用静态,因为我特别需要实例化,因此具有静态成员的嵌套结构/类不适用于我的情况。
这是我能想到的最接近的东西,但我讨厌我必须创建初始化程序来设置成员。我希望有一些不那么冗长的东西。
那么有没有更简单的方法呢?