有没有人在Scala中开发大量Android应用程序?这是一个可行的选择吗?有没有成熟的开发环境?鉴于Scala Eclipse插件的状态,看起来好像除了IntelliJ Ultimate之外没有好的IDE支持.
一些人已经发布了教程,描述了如何捏造Eclipse ADT以对Scala进行排序,以及如何使用Proguard 来修改Scala库,但除此之外,关于这一主题的讨论很少令人担忧.
更新2011-08-01:来自Bump应用程序背后开发人员的Android + Scala上一篇有趣的文章:Bump Dev Blog - 我们如何在Bump for Android中使用Scala
Kotlin有没有像歧视的工会(总和类型)?什么是惯用的Kotlin翻译(F#):
type OrderMessage =
| New of Id: int * Quantity: int
| Cancel of Id: int
let handleMessage msg =
match msg with
| New(id, qty) -> handleNew id qty
| Cancel(id) -> handleCxl id
Run Code Online (Sandbox Code Playgroud) 我正在阅读Codehua at Work中对Joshua Bloch的采访,他在Java 5中对泛型的介绍感到遗憾.他不喜欢具体的实现,主要是因为方差支持--Java的通配符 - 使得它不必要地复杂化.
据我所知,C#3没有像明确的,有界的通配符那样的东西,例如你不能声明一个接收Asset或任何Asset子类(void PriceBatch(Collection<? extends Asset> assets)在Java中?)的方法PriceBatch .
有谁知道为什么没有将通配符和边界添加到C#中?故意遗漏这些功能以使语言更简单,或者这是他们还没有实现的东西呢?
编辑:圣烟,Eric Lippert本人的评论!在阅读了他和Paul的深刻见解之后,我意识到至少支持上限,并且上面的例子可以转换为C#:
void PriceBatch<T>(ICollection<T> assets) where T : Asset
Run Code Online (Sandbox Code Playgroud)
另一方面,显然不支持下限,因为Eric在他的第二条评论中说,例如,可能没有办法直接将这个(有点人为的)Java代码转换为C#:
public class Asset {}
public class Derivative extends Asset {}
public class VanillaOption extends Derivative {}
public static <T extends Asset> void copyAssets(Collection<T> src, Collection<? super T> dst) {
for(T asset : src) dst.add(asset);
}
Collection<VanillaOption> src = new ArrayList<VanillaOption>();
[...]
Collection<Derivative> dst = new ArrayList<Derivative>();
[...]
copyAssets(src, dst);
Run Code Online (Sandbox Code Playgroud)
我对么?如果是这种情况,C#有上限而不是下限的特殊原因是什么?
如果我通过视图模型将某些(非易失性)数据绑定到UI,并且我从后台线程更新此数据而不锁定任何内容,并触发PropertyChanged事件,我保证 UI将看到此更新吗?如果我,那为什么?
我可以看到CLRBindingWorker调用Dispatcher.BeginInvoke,从而确保从UI线程中读取属性.我想知道的是,UI线程中的属性值是否总是"新鲜"(例如,是否可能发生类似于http://www.yoda.arachsys.com/csharp/threads/volatility.shtml的场景).
一个以前的答案表明这确实是这样的,但没有任何解释.
例:
public class MyViewModel : INotifyPropertyChanged
{
// Bound to the view as <TextBlock Text="{Binding Data}" />
private long _data;
public long Data
{
get { return _data; }
set
{
_data = value;
FirePropertyChanged("Data");
}
}
public MyViewModel()
{
new Thread(Updater).Start();
}
private void Updater()
{
while (true)
{
Data++;
Thread.Sleep(1000);
}
}
private void FirePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new …Run Code Online (Sandbox Code Playgroud) 是否有一种结构化语言以合理的方式声明样式,然后可以将其呈现为浏览器特定的css文件,类似于GWT对Javascript的作用?
它理想地是一种支持变量,处理浏览器怪癖和差异的语言(例如过滤器:alpha与不透明度),为诸如居中等常见任务提供直观的语法,并且有一种方法可以为功能较弱的浏览器表达回退.