小编Pao*_*lla的帖子

创建类型别名的实例会导致"需要类类型"错误

通过混合ObservableSet使用a 创建了一个新类型HashSet,我有点期待替换然后能够使用新类型创建一个新实例,如下面的"foo".但是这不能编译,尽管使用该类型的原始长形式似乎很好(如下面的"条形图"所示).

这只是语言的一个特征还是我做了一些愚蠢的事情?

package whatever

import collection.mutable._
object Whatever {

  type ObservableHashSet[T] = HashSet[T]  with  ObservableSet[T]
  class X


  def foo {
       new  ObservableHashSet[X]
  }

   def bar {
    new HashSet[X]  with  ObservableSet[X]
  }
}
Run Code Online (Sandbox Code Playgroud)

错误是......

error: class type required but scala.collection.mutable.HashSet[scala.Whatever.X] with scala.collection.mutable.ObservableSet[scala.Whatever.X] found
new  ObservableHashSet[X]
Run Code Online (Sandbox Code Playgroud)

scala

11
推荐指数
1
解决办法
2207
查看次数

关闭Scala中的循环变量

正如Eric Lippert的博客文章中所讨论的那样,关闭循环变量被认为是有害的,在C#中关闭循环变量会产生意想不到的后果.我试图理解是否将同样的"问题"应用于Scala.

首先,由于这是一个Scala问题,我将尝试解释Eric Lippert的C#示例,在他的代码中添加一些注释

// Create a list of integers
var values = new List<int>() { 100, 110, 120 };

// Create a mutable, empty list of functions that take no input and return an int
var funcs = new List<Func<int>>();

// For each integer in the list of integers we're trying
// to add a function to the list of functions
// that takes no input and returns that integer
// (actually that's not what …
Run Code Online (Sandbox Code Playgroud)

closures loops scala

11
推荐指数
2
解决办法
1964
查看次数

接口实现的c#行为

我在c#中发现了一个行为,我想知道它是否在规范中(并且可以预期在所有平台和.NET运行时的新版本上工作),或者它是否是恰好可行的未定义行为但可能随时停止编译.

所以,假设我想采用现有的类,如下所示:

public class HtmlTextBox
{
  public string Text {get; set;}
}

public class HtmlDiv
{
  public string Text {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

现在我真的希望他们实现一个通用的IText接口,就像这样:

public interface IText 
{
  string Text {get; }   
}
Run Code Online (Sandbox Code Playgroud)

但我无法直接更改类,因为它们是外部库的一部分.现在有各种方法可以通过继承或装饰器来实现.但我很惊讶地发现,简单地编译并在.NET 4.5(Windows 7 64位)上运行.

public class HtmlTextBox2 : HtmlTextBox, IText {}
public class HtmlDiv2 : HtmlDiv, IText {}
Run Code Online (Sandbox Code Playgroud)

而已.这让我可以直接替换HtmlTextBoxHtmlDiv使用他们现有的Text属性作为实现IText.

我一半期待编译器对我大吼大叫,要求我提供一个明确的重新实现Text,但是在.NET 4.5中,这只是起作用:

IText h2 = new HtmlTextBox2{Text="Hello World"};
Console.WriteLine(h2.Text);  //OUTPUT: hello world
Run Code Online (Sandbox Code Playgroud)

事实上,我在单声道上尝试过相同的功能(无论ideone.com使用的是什么版本),单声道也不会对我大喊大叫

所以我想我很高兴,但在尝试使用严肃的代码之前,我想检查一下我是否误解了这里真正发生的事情,或者我是否不能依赖它来工作.

.net c# mono

7
推荐指数
1
解决办法
733
查看次数

如果让多个模式不起作用

您可以使用if let模式匹配范围:

let n=1
if let 1...3 = n { println!("found in range") }
Run Code Online (Sandbox Code Playgroud)

但我不能让它适用于多种模式:

// this does not compile
if let 1 | 2 | 3 = n { println!("found in pattern") }
//      -^ unexpected token
Run Code Online (Sandbox Code Playgroud)

我以为第二个if let去了:

// this does compile and work
match n {
    1 | 2 | 3 => println!("found in pattern"),
    _ => {}
}
Run Code Online (Sandbox Code Playgroud)

什么赋予了什么?我使用了错误的语法吗?我是否期望多种模式应该被误导?这只是没有实现?

操场

rust

7
推荐指数
1
解决办法
655
查看次数

实体框架和默认值

在Entity Framework中,默认值约束功能尚未实现,我自己尝试了,然后在这里阅读它.所以,我想知道获得这个的最佳方法是什么.我应该使用存储过程还是触发类似的东西?并且在实体框架中添加了更好或更新的东西,因为我不想在代码中明确地处理它.这将是一个很大的帮助.

c# sql sql-server entity-framework

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

如何在C#中解析可为空的DateTime对象

command.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = 
     EndDate == null ? 
        (DateTime?)null : 
        DateTime.Parse(EndDate.ToShortDateString() + " " + EndTime);
Run Code Online (Sandbox Code Playgroud)

EndDate的类型是DateTime?和EndTime只是一个包含时间的字符串.但它在解析时给我错误,因为EndDate是可以为空的DateTime.我怎么解析这个?

c# datetime

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

标签 统计

c# ×3

scala ×2

.net ×1

closures ×1

datetime ×1

entity-framework ×1

loops ×1

mono ×1

rust ×1

sql ×1

sql-server ×1