有时在类名后面指定初始化列表而不使用()运算符:
Cat cat = new Cat { Age = 10, Name = "Fluffy" }
Run Code Online (Sandbox Code Playgroud)
其他时候在()运算符后指定:
List<Cat> cats = new List<Cat>
{
new Cat(){ Name = "Sylvester", Age=8 }
}
Run Code Online (Sandbox Code Playgroud)
我假设差异是因为这里新的Cat()在列表中.但我仍然不明白为什么它应该是不同的.那么为什么不同,何时使用哪种语法?
谢谢.
通常,映射索引函数将每个列表项映射到相应的索引,其中第一个索引为0,第二个索引为1等.
是否有可能让索引从另一个数字开始并从那里开始?
我在使用命令提示符使用自定义jar库(来自http://algs4.cs.princeton.edu/home/的 algs4.jar/stdlib.jar )时遇到问题.我将库添加到IntelliJ类路径设置(项目结构 - > SDKs - >类路径),并且能够使用IntelliJ使用它们的类没有问题.
但是,我也希望能够在命令提示符中使用这些库.即使我在Windows设置中没有设置CLASSPATH变量,我也能够在cmd中使用javac/java,在使用标准java库时没有问题.(可能是因为IntelliJ为每个启动/编译的所有标准库设置CLASSPATH以在系统范围内工作).但是,即使将2个jar添加到IntelliJ类路径设置后,我也无法在cmd中使用"javac".然后我在Windows设置中创建了CLASSPATH变量,并将jar添加到它们中.在此之后,我能够使用javac进行编译,没有任何问题.但是,当我尝试在cmd中运行程序时,我得到了这个:
"错误:无法找到或加载主类".
每当我使用任何jar库(包括标准库)时,我都会遇到此错误,在设置Windows CLASSPATH之前我没有遇到任何问题.我想发生的事情是,一旦我设置了自己的CLASSPATH,这将覆盖由intelliJ设置的类路径.当我删除CLASSPATH时,我再次能够在cmd中编译和运行标准库,而不是2个自定义库.
请帮忙!
我试图迭代给定目录中的文件列表,并将一个递增变量i = {1,2,3 .....}添加到它们的名称中.
这是我用于迭代文件和更改每个文件名称的代码:
(defn addCounterToExtIn [d]
(def i 0)
(doseq [f (.listFiles (file d)) ] ; make a sequence of all files in d
(if (and (not (.isDirectory f)) ; if file is not a directry and
(= '(\. \i \n) (take-last 3 (.getName f))) ) ; if it ends with .in
(fs/rename f (str d '/ i (.getName f)))))) ; add i to start of its name
Run Code Online (Sandbox Code Playgroud)
我不知道我怎么可以增加i如doseq通过每个文件进行迭代.或者,是否有更好的循环用于实现所需的结果?
我在使用C++中的指针时遇到问题,我无法弄清楚它是什么;
我有一个名为LectureNode的类:
class LectureNode
{
public:
Lecture *LecturePtr;
LectureNode(Lecture lec)
{
LecturePtr = &lec;
}
};
Run Code Online (Sandbox Code Playgroud)
这个类的构造函数工作得很好.我有另一个班:
class LectureForest
{
LectureNode *LecNode;
list<Lecture>::iterator it;
public:
LectureForest(list<Lecture> lecs)
{
Makeset(lecs);
}
void Makeset(list<Lecture> lecs)
{
for(it = lecs.begin(); it != lecs.end(); it++)
{
LecNode = LectureNode(*it);
}
}
Run Code Online (Sandbox Code Playgroud)
问题发生在最后一行.(*it)传递给LectureNode构造函数,LectureNode成功创建,但是LecNode没有指向它,而是调试器说坏指针.
谢谢.