在C++中,是否可以枚举枚举(运行时或编译时(首选))并为每次迭代调用函数/生成代码?
示例用例:
enum abc
{
start
a,
b,
c,
end
}
for each (__enum__member__ in abc)
{
function_call(__enum__member__);
}
Run Code Online (Sandbox Code Playgroud)
合理的重复:
在Java中你可以:
public enum Enum {
ONE {
public String method() {
return "1";
}
},
TWO {
public String method() {
return "2";
}
},
THREE {
public String method() {
return "3";
}
};
public abstract String method();
}
Run Code Online (Sandbox Code Playgroud)
你是如何在Scala中做到这一点的?
编辑/有用的链接:
我只是想知道是否有可能在Scala中迭代密封的特征?如果没有,为什么不可能?由于特性是密封的,应该可以吗?
我想做的是这样的:
sealed trait ResizedImageKey {
/**
* Get the dimensions to use on the resized image associated with this key
*/
def getDimension(originalDimension: Dimension): Dimension
}
case class Dimension(width: Int, height: Int)
case object Large extends ResizedImageKey {
def getDimension(originalDimension: Dimension) = Dimension(1000,1000)
}
case object Medium extends ResizedImageKey{
def getDimension(originalDimension: Dimension) = Dimension(500,500)
}
case object Small extends ResizedImageKey{
def getDimension(originalDimension: Dimension) = Dimension(100,100)
}
Run Code Online (Sandbox Code Playgroud)
通过给枚举值赋予实现,我可以用Java完成.Scala中有同等的东西吗?
我正在使用C#构建的一些代码在Elixir中重建一些东西.
这是非常黑客攻击,但完美的工作(虽然不是在Linux上,因此重建).
基本上它做的是检查一些RSS提要并查看是否有任何新内容.这是代码:
Map historic (URL as key, post title as value).
List<string> blogfeeds
while true
for each blog in blogfeeds
List<RssPost> posts = getposts(blog)
for each post in posts
if post.url is not in historic
dothing(post)
historic.add(post)
Run Code Online (Sandbox Code Playgroud)
我想知道如何在Elixir中有效地进行Enumeration.而且,似乎我在"历史性"中添加东西的过程就是反功能编程.
显然,第一步是声明我的URL列表,但除此之外,枚举的想法正在弄乱我的脑袋.有人可以帮帮我吗?谢谢.
我正在为C#.NET 3.5中的自定义ConfigurationHandler编写自定义ConfigurationElementCollection,并且我希望将IEnumerator公开为通用IEnumerator.
实现这一目标的最佳方法是什么?
我目前正在使用该代码:
public new IEnumerator<GenericObject> GetEnumerator()
{
var list = new List();
var baseEnum = base.GetEnumerator();
while(baseEnum.MoveNext())
{
var obj = baseEnum.Current as GenericObject;
if (obj != null)
list.Add(obj);
}
return list.GetEnumerator();
}
干杯
据我所知,Scala具有Value(Int),Value(String)和Value(Int,String)的Enumeration Value类的定义.
有没有人知道创建一个新的Value子类来支持不同的构造函数的例子?
例如,如果我想创建一个带有Value(Int,String,String)对象的Enumeration,我该怎么做?我想要使用Enumeration类的所有其他好处.
谢谢.
我有一个关于在界面中放置Java枚举的问题.为了更清楚,请参阅以下代码:
public interface Thing{
public enum Number{
one(1), two(2), three(3);
private int value;
private Number(int value) {
this.value = value;
}
public int getValue(){
return value;
}
}
public Number getNumber();
public void method2();
...
}
Run Code Online (Sandbox Code Playgroud)
我知道接口包含空体的方法.但是,我在这里使用的枚举需要一个构造函数和一个方法来获取相关的值.在此示例中,建议的接口不仅包含具有空体的方法.是否允许此实施?
我不确定是否应该将enum类放在接口或实现此接口的类中.
如果我将枚举放在实现此接口的类中,那么public Number getNumber()方法需要返回枚举类型,这将迫使我在接口中导入枚举.
使用IEnumerable<T>返回类型有问题吗?FxCop抱怨返回List<T>(它建议返回Collection<T>).
好吧,我一直受到一条规则的指导:"尽可能接受,但要回报最大值".
从这个角度来看,返回IEnumerable<T>是一件坏事,但是当我想使用"懒惰检索"时我该怎么办?此外,yield关键字是如此的好.
在这篇文章的最后:http://www.learncpp.com/cpp-tutorial/45-enumerated-types/,它提到了以下内容:
最后,与常量变量一样,枚举类型显示在调试器中,使得它们在这方面比#defined值更有用.
上面的大胆句子是如何实现的?
谢谢.
enumeration ×10
enums ×4
c++ ×3
scala ×3
c# ×2
java ×2
collections ×1
constants ×1
elixir ×1
ienumerable ×1
ienumerator ×1
interface ×1
macros ×1
scala-macros ×1
sealed ×1