或者换句话说,Scala中C#IEnumerable <T>的等价物是什么?我以为是Seq [T],但我已经发现,HashMap没有实现这个,所以它不可能是真的.
那么,它是什么?
这与以下问题相同: 使用System.Xml.Linq命名空间的显式元素关闭标记
但我使用Net 4.0,答案不再适用.
问题是我保存标签没有真正的值,我的输出XML看起来像这样:
<field/>
但我需要的是始终打开和关闭标签,即
<field></field>
问题:怎么做?
添加空节点:
if (field_xml == null) // always true, because I create the file for the first time
{
field_xml = new XElement(XMLKeys.field,String.Empty);
table_xml.Add(field_xml);
}
field_xml.SetAttributeValue(XMLKeys.name, field_info.Name);
// ... setting some other attributes of this node
Run Code Online (Sandbox Code Playgroud)
然后,保存xml:
var writer = new FullEndingXmlTextWriter(parameters.OutputFilename, Encoding.UTF8);
root_xml.Save(writer);
Run Code Online (Sandbox Code Playgroud)
FullEndingXmlTextWriter是Evil Greebo指出的专门类(它应该强制显式关闭标记).
首先:
好的,所以我有这样一段代码:
val text = new scala.xml.Text("just a text")
val root = new scala.xml.Elem(null,"element",null,scala.xml.TopScope,text)
val doc = new scala.xml.Document()
doc.docElem = root
println(doc.toString())
Run Code Online (Sandbox Code Playgroud)
几乎不错,但结果我得到:
<element>just a text</element>
Run Code Online (Sandbox Code Playgroud)
我也想得到XML标题,如:
<?xml version="1.0"?>
<element>just a text</element>
Run Code Online (Sandbox Code Playgroud)
问题:如何添加?
当然,从常识的方面来说,不是一些println带有标题的额外逐字的黑客攻击;-).
IntelliJ IDEA 10.5(可能这很重要).
我是Scala的新手,所以我以一种尴尬的方式开始.我用两个类创建了一个文件 - 空的MainApp和另一个类,HelloWorld和方法main.
我编译并执行 - IntelliJ自动检测到HelloWorld为主类.还可以.
然后,我将main方法移动到MainApp,并删除(然后清空)HelloWorld类.当我试图运行它时,IntelliJ仍然坚持使用HelloWorld.所以我重新配置了项目并选择了MainApp作为主类.
我尝试用这样的结果运行它:
MainApp主要方法应该是静态的
我完全不解.首先,Scala没有静态方法.第二,为什么它现在不编译,之前编译(使用HelloWorld类).我虽然只要求有一个主要方法.
预先感谢您的帮助.
请注意:我知道我可以从头开始一个新项目以完全避免这个问题,但我想学习一些东西,即了解发生了什么,并修复这个项目.
我尝试使用joda-time库来更轻松地测量程序的执行时间(而不是用于分析,仅适用于用户).
但是当我编译我的项目时,我得到关于缺少依赖项的错误 - 缺少"FromString"类.我尝试显式导入它,但是当输入intellisense(IntelliJ)甚至没有检测到它时,另一方面只有一个jar可以从joda-time网站下载.
我该如何解决这种依赖?
我知道JT的包装,但是现在我想直接使用它.
ASP.Net MVC 3,Kendo UI Web,Kendo网格控件.
我将几个字段配置为只读:
.Model(model =>
{
model.Field(it => it.foobar).Editable(false);
...
Run Code Online (Sandbox Code Playgroud)
它在内联模式下按预期工作.但是当我将模式切换为弹出窗口时,编辑器会显示整个结构,因此我可以编辑我想要的任何字段(标记为不可编辑的字段).
那么如何标记它们以便弹出编辑器只显示标记为编辑的那些?
我有一个控制器,动作返回PartialViewResult并用它查看.为了测试我输出当前的DateTime(在行动中),并在视图中检查它是否为空,所以我知道我得到了什么.
当我尝试将该视图"嵌入"另一个视图时,Html.Action我获得当前的日期时间,因此我的操作被调用.
但是当我使用Html.Partial视图渲染为null时,我的动作方法不会被调用.此外,两个断点和调试器也确认,在后一种情况下,我的动作方法不会被调用.
行动方式:
public PartialViewResult Test()
{
return PartialView(DateTime.Now);
}
Run Code Online (Sandbox Code Playgroud)
(部分)查看:
@model DateTime?
<p>@(Model ?? DateTime.MinValue)</p>
Run Code Online (Sandbox Code Playgroud)
并从主视图调用是@Html.Action("Test")或@Html.Partial("Test").
假设我有大小为 N(即 N 个元素)的数据,并且字典是用容量 N 创建的。以下的复杂性是多少:
MS 仅显示条目检索接近 O(1)。但其余的呢?
天真的问题我相信,但我发现只是从构造函数中调用其他构造函数.我需要调用一个方法.我的班级(开始):
class ScopedIterator[T](val iter : Iterator[T])
{
private var had_next : Boolean;
private var value : T;
moveNext();
...
Run Code Online (Sandbox Code Playgroud)
所以我想有一个带有单个参数的构造函数,并在这样的构造函数中调用方法moveNext.就这样.
当我编译代码时,我得到错误:
错误:抽象成员可能没有私有修饰符
private var had_next:Boolean;
和价值相同.
我改成了:
class ScopedIterator[T]
{
private var had_next : Boolean;
private var value : T;
private var iter : Iterator[T];
def this(it : Iterator[T]) =
{
iter = it;
moveNext();
}
...
Run Code Online (Sandbox Code Playgroud)
但现在我得到"iter = it"的错误:
错误:'this'预期但找到了标识符.
iter = it;
如何在Scala中编写这样的构造函数?
2012-02-04由"homoiconicity"字样赞助http://en.wikipedia.org/wiki/Homoiconicity.
背景:我即将选择哪本关于Clojure的书 - "Clojure in Action"或(4月底传入)"Clojure Programming"(您可以通过O'Reilly Rough Cuts阅读 ,一半页面是可见的).令我震惊的是,在这两本书中,这种属性 - 同质性 - 得到了如此重视.
由于Clojure的根源是以Lisp为基础的,所以我提到 "死性感"这本书真是太重要了.好吧,我可以看到详细解释的宏,但我没有听到提到的重点.现在比较一下(引自"Clojure in Action")
这种同质性也是Clojure宏观系统成为可能的原因.
它几乎看起来没有它,宏是不可能的.甚至维基百科声明(上面的链接)也更加平衡,但这些来源(*)都没有计算人为因素而支持英语语法.
如果我没有弄错的话,宏语法(类似于Lisp)可以在C#中实现(例如),只需要C#团队付出更多努力.但这是设计师团队的成本,而不是用户(?).第二 - habbits很重要.如果在现实生活中你认为"a + b",并且在计算机世界中你不断将它翻译成"+ a b",那么生产力就会受到影响(当我从C++ functor转到C#lambdas时,我可以看到这一点).
这个赞美,即Clojure程序员几乎直接将程序编写为AST,让我感到害怕,因为"由于直接用十六进制代码编写代码,不仅你学习十六进制系统,而且你更接近机器".
总结一下 - 我喜欢元编程,我喜欢类似Lisp的宏(虽然我不是Lisper),但我在这里看到两件事 - 宏和同质性.第一个毫无疑问是伟大的,第二个 - 不是那么多(至于我的理解),因为它使人类适合计算机的需要,它应该是另一种方式.
同性恋真的对人类(语言的最终用户)有益,或者它实际上几乎只对语言设计者有益吗?非常欢迎例子!
或者以防万一我改写 - 假设给定的语言有Lisp-macros,"增加"同质性会提高最终用户的生产力吗?Expresiveness?还是相反?
(*)我不能百分百肯定,因为我只看到一小部分Clojure书籍,我不是在阅读它们,只是评估它们的购买.
谢谢大家的答案,可惜我只选择一个作为解决方案:-),这并不意味着我更少重视别人,这对我来说是最完整的.
scala ×5
c# ×2
xml ×2
clojure ×1
collections ×1
compilation ×1
constructor ×1
creation ×1
dependencies ×1
dictionary ×1
document ×1
gridview ×1
jodatime ×1
kendo-ui ×1
linq ×1
lisp ×1
macros ×1
method-call ×1
tags ×1
types ×1