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

0 投票
3 回答
223 浏览

c# - Visual Studio IDE 对 var 关键字的含义感到困惑

考虑以下简单程序:

该程序绝对没有问题,并且可以毫无问题地编译。(您可以运行它,可能包括对Methodfrom的调用Main。)

但是,Visual Studio IDE对局部变量的类型有一个错误的印象z。它似乎认为它实际上是一个z(在 C# 中又名)。问题至少在三种情况下表现出来:Int32Int16short

  1. 当您“悬停”在(将鼠标悬停在)var关键字上时,它会Int32在工具提示中显示您。那是错的。

  2. 当您将文本(键盘)光标移动到语句TakeOnlyInt16(z);inside 内Method时,它会在该语句的左下角显示一个小提示,提供“为TakeOnlyInt16in生成方法存根Program”。这是错误的,因为该方法显然已经存在。但似乎认为已经存在的过载是错误的。shortint

  3. 当你z.在里面输入 (zed dot)Method时,成员就会Int32出现在intellisense中。请注意, 的重载CompareTo是由 声明的重载,Int32而不是由声明的重载Int16。此外,当您键入时,智能感知成员列表中缺少扩展方法z.

希望您在没有屏幕截图的情况下理解我的解释。

问题:这个错误来自哪里?它是众所周知的吗?它也在旧版本的 Visual Studio 中吗?

我在VS2013中试过这个。

0 投票
1 回答
506 浏览

javascript - 在比较Javascript中的数字时如何避免自动类型强制?

我想知道在 JavaScript 中使用小于和大于运算符比较数字时如何避免自动强制转换。

例如,我已经知道 == 运算符会进行类型强制,例如:

而 === 运算符则不会,例如:

但是,在比较数字时如何避免这种情况?例如:

我想避免这种自动类型强制。

0 投票
1 回答
916 浏览

arguments - Coq --- 参数指令

我正在阅读软件基础书,我遇到了一个将参数声明为隐式的命令:

例如:

但是,每当我尝试执行此类命令时,都会收到以下消息:

即使我尝试编译本书附带的脚本,也会出现相同的消息。可能是什么问题呢?

我正在使用 Coq 版本 8.3pl4 和 CoqIDE 编辑器。

0 投票
3 回答
812 浏览

scala - Is it possible to define a function return type based on a defined mapping from the type of a function argument?

Ideally I'd like to be able to do the following in Scala:

In principle the goal is simply to be able to 'map' TypeToBuild to TypeToBuildBuilder using external mapping definitions (i.e. assume no ability to change these classes) and leverage this in type inferencing.

I got the following working with AnyRef types:

Note that the type is passed as a function argument rather than a type argument.

I'd be supremely happy just to find out how to get the above working with Any types, rather than just AnyRef types. It seems this limitation comes since Singleton types are only supported for AnyRefs (i.e. my use of TypeToBuild.type).

That being said, an answer that solves the original 'ideal' scenario (using a type argument instead of a function argument) would be fantastic!

EDIT

A possible solution that requires classOf[_] (would really love not needing to use classOf!):

Being able to just use builder(TypeToBuild) is really just a win in elegance/brevity. Being able to use builder[TypeToBuild] would be cool as perhaps this could one day work (with type inference advancements in Scala):

Here is a complete, working example using classOf: http://ideone.com/94rat3

0 投票
0 回答
1212 浏览

c# - 为什么隐式类型优于显式类型?

C# Coding Conventions中,当变量的类型从赋值的右侧显而易见时,为什么微软建议使用隐式类型?

我知道没有必要声明它,因为它很明显,但为什么建议呢?显式键入不是让代码更容易理解吗?

对比

这有编译时的好处吗?

0 投票
1 回答
1540 浏览

c# - 有条件地定义变量类型 C#

在“ADO.NET 实体数据模型”中,我从多个表中创建了一个“数据库优先”模型。所有表都有“代码”和“名称”字段以及不同的其他字段集。然后我创建了一个“上下文”对象。现在我想创建一个变量“src_table”,它将有条件地分配给 context.table1 或 context.table2 等,然后使用 src_table.code 和 src_table.name 属性。

像这样的代码可以正常工作:

或这个:

但我不知道如何给选择表的机会:

有没有办法做到这一点?

0 投票
1 回答
705 浏览

swift - 如何在 Swift 中正确支持 CGFloat 数学中的 Int 值?

目标

我(像网络上的许多其他人一样)想Int在数学中使用变量和文字,CGFloat因为到目前为止可读性和易于开发超过了可能的精度损失。当您在整个应用程序中使用手动布局而不是使用情节提要时,这一点最为明显。

因此,以下内容应该可以在没有任何手动CGFloat转换的情况下工作:

方法

由于我们无法将隐式转换添加到 Swift 类型,因此我必须添加适当的运算符,这些运算符采用CGFloatInt.

问题

当 Swift 尝试CGFloat从整数文字隐式创建值时,这两个运算符变得模棱两可。它不知道要转换两个操作数中的哪一个(示例 case p)。

问题

有没有办法以一种没有歧义并且所有测试用例都成功的方式声明运算符?

0 投票
1 回答
247 浏览

haskell - 为什么简单的 Haskell 函数会拒绝表示为比率的 Fractional 参数?

诚然,我是 Haskell 新手。为了探索惰性,我在 ghci 中创建了一个函数,它返回它的第二个参数:

我可以使用 、 、 、 和 (以小数表示)类型的Char参数[Char]Num调用FloatingFractional

latter当我尝试将a 应用于以Fractional比率表示时,为什么会出现可怕的错误(以及这是什么意思) :

0 投票
1 回答
95 浏览

scala - 来自其他类型类的隐式 def 类型类

我想为已经具有隐式 Fractional 或 Integral 类型类的每个类型 T 添加一个新的隐式类型类 Divisible。

我写的代码无法编译:

我收到的错误是:

找不到参数 div 的隐式值:core.common.Divisible[Double]

另一方面,如果我将隐式 def 移动到应用程序中,它会编译。

如何帮助编译器在 Divisible 的伴随对象中找到隐式 def?

编辑:这个问题有一个错误。

0 投票
2 回答
107 浏览

scala - 在伴随类中找不到隐式参数

我有一个这样的数字包装器

一切正常。但是当我想要进行隐式转换时,我创建了一个伴随类,如下所示:

但我在编译时出现错误:

找不到参数 n 的隐式值:Numeric[A]

这里有什么问题?为什么它试图在编译时找到类型 A 的隐式匹配?

非常感谢您的帮助。