标签: implicit

C++运算符中的隐式类型转换规则

我想知道什么时候应该投出更好.在添加,乘法等时,C++中的隐式类型转换规则是什么.例如,

int + float = ?
int * float = ?
float * int = ?
int / float = ?
float / int = ?
int / int = ?
int ^ float = ?
Run Code Online (Sandbox Code Playgroud)

等等...

表达式是否总是被评估为更精确的类型?Java的规则有所不同吗?如果我不准确地说出这个问题,请纠正我.

c++ casting implicit

156
推荐指数
5
解决办法
9万
查看次数

我们可以在c#中定义枚举的隐式转换吗?

是否可以在c#中定义枚举的隐式转换?

可以实现这一目标的东西?

public enum MyEnum
{
    one = 1, two = 2
}

MyEnum number = MyEnum.one;
long i = number;
Run Code Online (Sandbox Code Playgroud)

如果没有,为什么不呢?

为了进一步讨论和提出这个想法,我跟进了我目前处理这个问题的方法:改进C#enum

c# enums implicit implicit-conversion

125
推荐指数
7
解决办法
6万
查看次数

Scala中隐式参数的好例子?

到目前为止,Scala中的隐式参数对我来说并不好看 - 它太接近于全局变量,但是由于Scala看起来像是相当严格的语言,我开始怀疑自己的看法:-).

问题:当隐式参数真正起作用时,你能展示一个真实(或接近)的好例子吗?IOW:比这更严重的东西showPrompt,这将证明这种语言设计的合理性.

或者相反 - 你能否展示出可靠的语言设计(可能是想象的),这种设计会使隐含的不必要.我认为即使没有机制比implicits更好,因为代码更清晰,没有猜测.

请注意,我问的是参数,而不是隐式函数(转换)!

更新

全局变量

谢谢你们所有的好答案.也许我澄清了我的"全局变量"异议.考虑这样的功能:

max(x : Int,y : Int) : Int
Run Code Online (Sandbox Code Playgroud)

你叫它

max(5,6);
Run Code Online (Sandbox Code Playgroud)

你可以(!)这样做:

max(x:5,y:6);
Run Code Online (Sandbox Code Playgroud)

但在我眼中的implicits作用是这样的:

x = 5;
y = 6;
max()
Run Code Online (Sandbox Code Playgroud)

它与这样的构造(类似PHP)没有太大的不同

max() : Int
{
  global x : Int;
  global y : Int;
  ...
}
Run Code Online (Sandbox Code Playgroud)

德里克的回答

这是一个很好的例子,但如果你能想到不使用发送消息的灵活使用implicit请发一个反例.我对语言设计的纯度非常好奇;-).

parameters scala implicit

73
推荐指数
4
解决办法
2万
查看次数

Scala中的哪些类型类有用?

据我所知,在这篇博文 中,Scala中的"类型类"只是一个用特征和隐式适配器实现的"模式".

正如博客所说,如果我有特征A和适配器,B -> A那么我可以调用一个函数,它需要类型A的参数,参数类型B而不显式调用此适配器.

我发现它很好但不是特别有用.您能给出一个用例/示例,它显示了此功能的用途吗?

scala implicit

66
推荐指数
5
解决办法
2万
查看次数

TypeError:无法隐式地将'int'对象转换为str

我正在尝试编写一个文本游戏,我在我定义的函数中遇到了一个错误,让你在制作角色后基本上可以花费你的技能点数.起初,错误表明我试图从代码的这一部分中的整数中减去一个字符串:balance - strength.显然这是错的,所以我用strength = int(strength)... 修复它但是现在我得到了这个我以前从未见过的错误(新程序员)而且我很难说它到底想要告诉我什么以及我如何修复它.

这是我的函数部分无法正常工作的代码:

def attributeSelection():
    balance = 25
    print("Your SP balance is currently 25.")
    strength = input("How much SP do you want to put into strength?")
    strength = int(strength)
    balanceAfterStrength = balance - strength
    if balanceAfterStrength == 0:
        print("Your SP balance is now 0.")
        attributeConfirmation()
    elif strength < 0:
        print("That is an invalid input. Restarting attribute selection. Keep an eye on your balance this time!")
        attributeSelection()
    elif strength > balance:
        print("That is …
Run Code Online (Sandbox Code Playgroud)

python string int implicit

62
推荐指数
1
解决办法
21万
查看次数

显式和隐式c#

我是C#的新手并且学习新单词.在编程c#时,我发现很难理解这两个词的含义是什么.我在字典中查找了含义,这是我得到的:

含蓄

"隐含的东西是间接表达的."

"如果一个品质或元素隐含在某个东西中,它就会参与其中或由它展示;"

明确的

"明确表达或展示的东西清楚公开,没有任何隐藏任何东西的企图"

"如果你明确表达某些事情,那么你就会公开而清楚地谈论它."

我想在C#中理解它.

谢谢你的帮助.

干杯


附加信息:

这是我正在阅读的书中的一部分句子,其中有"隐含"这个词

"这意味着里面的区域和占用者AreaPerPerson( ) 隐含地引用在调用的对象中找到的那些变量的副本AreaPerPerson( )"

我完全不明白这句话试图说什么.

c# dictionary explicit implicit

59
推荐指数
3
解决办法
4万
查看次数

Android,如何在我的应用程序中阅读QR码?

在我的应用程序中,我需要阅读Qr代码.我在网上搜索并找到了Zing代码但是很多开发人员使用它时遇到了问题,而且它似乎有问题!

如果我假设我的客户在他们的设备上安装了qr阅读器,我如何使用这些应用程序并通过隐式意图调用它们?

如果用户没有任何qr阅读器,应用程序会发生什么?如果它崩溃,我可以要求用户下载例如QrDroid,然后使用它吗?

android qr-code implicit android-intent

59
推荐指数
5
解决办法
12万
查看次数

ReSharper和var

可能重复:
为什么ReSharper想要使用'var'作为一切?

我有ReSharper 4.5并且到目前为止发现它非常宝贵,但我有一个顾虑;
它似乎想要隐含每个变量声明(var).
作为一个相对较新的开发人员,在这方面我应该相信ReSharper多少钱?

从Paints Tab Headers的方法中获取以下代码片段.

TabPage currentTab = tabCaseNotes.TabPages[e.Index];
Rectangle itemRect = tabCaseNotes.GetTabRect(e.Index);
SolidBrush fillBrush = new SolidBrush(Color.Linen);
SolidBrush textBrush = new SolidBrush(Color.Black);
StringFormat sf = new StringFormat
{
    Alignment = StringAlignment.Center,
    LineAlignment = StringAlignment.Center
};
Run Code Online (Sandbox Code Playgroud)

Resharper希望我将所有5个改为var.我已经阅读了以下类似帖子,在C#中使用var关键字,但我想从ReSharper的角度来看.

.net resharper implicit

51
推荐指数
5
解决办法
2万
查看次数

基于返回类型推断的意外隐式解析

给定一个类型类,其中应根据返回类型执行实例选择:

case class Monoid[A](m0: A) // We only care about the zero here
implicit def s[T] : Monoid[Set[T]] = Monoid(Set.empty[T])
implicit def l[T] : Monoid[List[T]] = Monoid(List.empty[T])
def mzero[A](implicit m: Monoid[A]) : A = m.m0
Run Code Online (Sandbox Code Playgroud)

为什么Scala(2.11.6)无法解析正确的实例:

scala> mzero : List[Int]
<console>:24: error: ambiguous implicit values:
 both method s of type [T]=> Monoid[Set[T]]
 and method l of type [T]=> Monoid[List[T]]
 match expected type Monoid[A]
              mzero : List[Int]
              ^
Run Code Online (Sandbox Code Playgroud)

当它有没有问题,使用时发现基于返回类型的隐式函数(我们在这里重新定义它为来说明它是多么相似mzero)

def i[A](implicit a : A) : …
Run Code Online (Sandbox Code Playgroud)

scala type-inference return-type implicit scalaz

51
推荐指数
1
解决办法
693
查看次数

如何将traits声明为隐含的"构造函数参数"?

我正在设计一个类层次结构,它由一个基类和几个特征组成.基类提供了几种方法的默认实现,并且traits选择性地覆盖某些方法abstract override,以便充当可堆叠的traits/mixins.

从设计的角度来看,这很有效,并映射到域,以便我可以从这里添加过滤函数(一个特征),带有来自此处的谓词(另一个特征)等.

但是,现在我想要一些我的特征来采用隐式参数.我很高兴从设计的角度来看这仍然有意义,并且在实践中不会让人感到困惑.但是,我不能说服编译器运行它.

问题的核心似乎是我无法为特征提供构造函数参数,因此可以将它们标记为隐式.在方法实现中引用隐式参数无法使用预期的"无法找到隐式值"消息进行编译; 我试图通过构建阶段(在实践中,它总是在范围内)"隐藏"隐含的方法,以便在方法中可用

implicit val e = implicitly[ClassName]
Run Code Online (Sandbox Code Playgroud)

但是(毫无疑问,你们很多人都希望)这个定义失败了同样的信息.

似乎这里的问题是我无法说服编译器用implicit ClassName标志标记特征本身的签名,并强制调用者(即将特征混合到一个对象中的那些)来提供隐式.目前我的调用者正在这样做,但编译器没有在此级别进行检查.


是否有任何方法可以将特征标记为在施工时需要某些隐含物?

(如果不是,这还没有实现,还是有更深层次的原因,为什么这是不切实际的?)

scala implicit traits

36
推荐指数
3
解决办法
2万
查看次数