标签: language-features

Java中long,double,byte,char的目的是什么?

所以我正在学习java,我有一个问题.看起来这些类型int,boolean并且string几乎float可以满足我在变量方面所需要的一切,除非在数字中需要十进制数字时可以使用.

我的问题是,其他类型的如long,double,byte,char等曾经在正常的日常编程中使用?可以使用哪些实用的东西?他们存在什么?

java variables language-features types

46
推荐指数
2
解决办法
9万
查看次数

.NET中类等级的加载器

有谁知道是否可以在.NET中定义"java自定义类加载器"的等价物?

给一点背景:

我正在开发一种针对CLR的新编程语言,称为"Liberty".该语言的一个特性是它能够定义"类型构造函数",它是编译器在编译时执行并生成类型作为输出的方法.它们是泛型的泛化(该语言确实具有普通泛型),并允许编写这样的代码(使用"Liberty"语法):

var t as tuple<i as int, j as int, k as int>;
t.i = 2;
t.j = 4;
t.k = 5;
Run Code Online (Sandbox Code Playgroud)

"tuple"的定义如下:

public type tuple(params variables as VariableDeclaration[]) as TypeDeclaration
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

在这个特定的例子中,类型构造函数tuple提供类似于VB和C#中的匿名类型.

但是,与匿名类型不同,"元组"具有名称,可以在公共方法签名中使用.

这意味着我需要一种方法,最终由编译器发出的类型可以跨多个程序集共享.例如,我想要

tuple<x as int>在程序集A中定义的最终类型与tuple<x as int>程序集B中定义的类型相同.

当然,问题是程序集A和程序集B将在不同的时间进行编译,这意味着它们最终都会发出自己不兼容的元组类型版本.

我考虑使用某种"类型擦除"来做这个,所以我会有一个像这样的一堆类型的共享库(这是"Liberty"语法):

class tuple<T>
{
    public Field1 as T;
}

class tuple<T, R>
{
    public Field2 as T;
    public Field2 as R;
}
Run Code Online (Sandbox Code Playgroud)

然后只重定向来自第i,j和k元组字段来访问Field1,Field2Field3.

然而,这不是一个真正可行的选择.这意味着,在编译时 …

.net compiler-construction clr language-features programming-languages

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

Ruby中的方法:对象与否?

受到这种讨论的启发,经过一些谷歌搜索后,我无法找到关于Ruby方法的一个非常简单的问题的答案:方法对象与否?

这里那里有不同的意见,我真的想听听,比方说,深入解释.

我知道Object#method方法,它接受一个方法名称并返回一个Method实例,但另一方面,你可以用块做类似的事情来使它们成为Proc实例,而块不是对象,所以是什么使得方法有什么不同?

ruby methods language-features object

43
推荐指数
3
解决办法
9538
查看次数

您是否曾限制自己使用语言功能的子集?

您是否曾限制自己使用语言功能的子集,更重要的是,为什么?

我很想知道谁选择只使用某些语言功能并避免使用其他功能,以便在诸如但不限于内存使用,执行速度或普通旧可读性和可维护性等方面赢得大奖.通过这样做,它产生了预期的结果,或者它可能只是妨碍了生产软件的其他方面.是否有任何关于这个主题的警示故事或狂野的成功故事值得分享?

language-agnostic language-features

41
推荐指数
8
解决办法
2071
查看次数

为什么Java varargs不支持集合?

在我的Java代码中,我经常使用非常方便的method(Class... args)varargs.据我所知,它们允许您传递任意数量的Class对象或数组Class[].由于我也经常使用Java集合类,因此两者之间缺乏兼容性使我感到沮丧.结果,我最终做了collection.toArray(),但这有一些类型安全问题.

所以现在问题是:为什么Java不允许实例Iterable<T>作为vararg参数,只要泛型类型适合T...vararg 的类型?不是每个人都一直使用列表,集等吗?是否有一种简单,类型安全的方式来提供从集合到vararg的转换?

java collections language-features variadic-functions

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

在Scala 2.8.0中迭代Java Map的新方法是什么?

如何scala.collection.JavaConversions取代Stack Overflow问题中的答案迭代Scala中的Java集合(它不起作用,因为"jcl"软件包已经消失了)和迭代使用Scala的Map(它在复杂的测试中对我不起作用)我将尝试归结并在此后发布).

后者实际上是一个Scala Map问题,但我想我需要知道这两个答案才能迭代java.util.Map.

language-features scala scala-2.8

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

C#有太多的语言功能吗?

这是我们团队中不时出现的讨论.虽然有一些人很快学会了C#3.0的功能,但其他人坚持使用经典技术.

有些人从不使用Linq,认为lambda表达式令人困惑,而且收益率是"可怕的".有时他们很难理解使用所有新功能的人编写的代码.我们可以说他们不掌握语言并且应该学习它.

但是,学习现代编程语言有多难?每个人都可以解决问题,每个人每天都要解决许多其他问题,而不是关心实施它的更好方法.培训人员不是免费的.另一方面,语言功能可以提高人们的工作效率,使代码更易于维护.

可能不完整的C#功能列表

  • 类,结构,基本类型,数组,装箱,接口,继承(抽象,虚拟,新,密封),属性,nullables
  • 例外
  • 仿制药
  • 多线程,锁
  • 反射
  • 代表,活动,匿名代表
  • 迭代器
  • lambda表达式
  • 扩展方法
  • LINQ

版本4即将推出,包括许多其他功能.

就个人而言,我几乎喜欢C#的所有功能,并喜欢用这种语言编写的简短代码.但我不必从头学习它.

我对您的意见以及您在学习或教授C#方面的经验感兴趣.是否有太多功能?还缺少重要的功能吗?语言功能是否使语言更易于使用或更难学?

请:没有答案像"语言A比语言B更好,因为......".

c# language-features language-design

35
推荐指数
3
解决办法
4604
查看次数

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

Delphi中有条件运算符,或者有没有?

我想,我把手远离德尔福太久了.在过去的几年里,我一直忙于Java和PHP.现在,当我回到做一点Delphi工作时,我意识到我真的很想念Java和PHP都支持的条件运算符.

在Delphi程序中你会找到多少个这样的行?

var s : string;
begin
  ...<here the string result is manipulated>...

  if combo.Text='' then
      s := 'null'
    else
      s := QuotedStr(combo.Text);

  result := result + s;
end;
Run Code Online (Sandbox Code Playgroud)

哪里很简单

result := result + (combo.text='')?'null':quotedStr(combo.text);
Run Code Online (Sandbox Code Playgroud)

就够了 我喜欢这个,它不仅缩短了代码,这样我也避免声明一些辅助s:string变量.

为什么条件运算符不是Delphi的一部分 - 它们是否会得到支持?我注意到2009版Delphi(泛型)有很多语言扩展,为什么不添加这个功能呢?

delphi language-features delphi-2009 conditional-operator

32
推荐指数
4
解决办法
1万
查看次数

使用参数名称和冒号调用C#方法

我开始注意到,当我在C#中进行方法调用时,我调用的方法的参数名称将显示在附加冒号的intellisense列表中,然后我可以格式化该方法这样打电话:

MethodCall(parameter1:value1, parameter2:value2);
Run Code Online (Sandbox Code Playgroud)

这是一种新的语言功能吗?它让我想起了在SQL中调用存储过程的方式,并指定参数名称,如下所示:

spDoSomeStuff @param1 = 1, @param2 = 'other param'
Run Code Online (Sandbox Code Playgroud)

这是一个类似的功能吗?如果是这样,到底是什么?如果没有,它是什么以及它用于什么.

c# language-features method-call

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