经过多年的Java编程,我总是习惯于创建main()这样的方法:
public static void main(String[] args) 
{
    runProgram();
}
但是最近我从Web上学习了一些代码并且有时看到这个代码而不是main()上面的常规用法:
public static void main(String[] args) 
{
    SwingUtilities.invokeLater(new Runnable() 
    {
        public void run() 
        {
            runProgram();
        }
    });
}
我只是想知道:
main()方式?当我试一试时,我看不出有任何区别.感谢您阅读我和您的答案.
我想强制特定的变量进入glm回归而不完全指定每个变量.我的真实数据集有大约200个变量.到目前为止,我还没有在我的在线搜索中找到这样的样本.
例如(只有3个变量):
n=200
set.seed(39) 
samp = data.frame(W1 = runif(n, min = 0, max = 1), W2=runif(n, min = 0, max = 5)) 
samp = transform(samp, # add A
A = rbinom(n, 1, 1/(1+exp(-(W1^2-4*W1+1))))) 
samp = transform(samp, # add Y
Y = rbinom(n, 1,1/(1+exp(-(A-sin(W1^2)+sin(W2^2)*A+10*log(W1)*A+15*log(W2)-1+rnorm(1,mean=0,sd=.25))))))
如果我想包含所有主要术语,这有一个简单的快捷方式:
glm(Y~., family=binomial, data=samp)
但是说我想要包括所有主要术语(W1,W2和A)加上W2 ^ 2:
glm(Y~A+W1+W2+I(W2^2), family=binomial, data=samp)
这有什么捷径吗?
[在发布之前编辑自己:]这个有效! glm(formula = Y ~ . + I(W2^2), family = binomial, data = samp) 
好的,那么这个呢!
我想省略一个主要的术语变量,只包括两个主要术语(A,W2)和W2 ^ 2和W2 ^ 2:A:
glm(Y~A+W2+A*I(W2^2), family=binomial, data=samp)
显然只有几个变量不需要快捷方式,但我使用高维数据.当前数据集"仅"有200个变量,但其他一些变量有成千上万个.
我正在寻找使用c ++进入程序主要功能的最佳实践技巧.目前我认为有两种方法可行.(尽管这些方法的"边缘"可以任意地彼此接近)
1:编写一个"Master"类,接收传递给main函数的参数并处理"Master"类中的完整程序(当然你也使用其他类).因此,主要功能将减少到最小的线.
#include "MasterClass.h"
int main(int args, char* argv[])
{
MasterClass MC(args, argv);
}
2:在主函数中编写"完整"程序,当然利用用户定义的对象!但是,还涉及全局功能,主要功能可能会有所增加.
我正在寻找一些关于如何用c ++编写程序主要功能的一般指导原则.我通过尝试为第一种方法编写一些单元测试来遇到这个问题,这有点困难,因为大多数方法都是私有的.
我编写了以下Java源文件(Hello.java):
package com;
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello!");
    }
}
我把它保存到C:/tmpjava/Hello.java.
从命令行,我导航到该目录并运行javac Hello.java.然后我跑dir:
Hello.classHello.java然后,从我刚刚运行的同一目录javac,我运行java Hello.class并得到:
Exception in thread "main" java.lang.NoClassDefFoundError: Hello/class
Caused by: java.lang.ClassNotFoundException: Hello.class
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Hello.class.  Program will exit.
这里发生了什么?!?怎么可以javac运行良好,但不是java吗?
当您尝试使用constexpr时,main如下所示:
constexpr int main()
gcc和clang抱怨:
错误:无法声明':: main'为内联
错误:'main'不允许声明为constexpr
让我们看看constexpr函数的要求是什么:
constexpr函数必须满足以下要求:
什么是LiteralType?
文字类型是以下任何一种
功能主体必须包括什么?
以下示例:
constexpr int main() { ; }
constexpr int main() { return 42; }
constexpr int main() {
// main defaults to return 0 
}
似乎符合所有这些要求.还有这个,main是在程序开始之前运行的特殊功能.您可以从main运行constexpr函数,并且为了将constexpr标记为constexpr,它必须在constexpr上下文中运行.
那么为什么main不允许成为constexpr?
#include <stdio.h>
int main() {
  while(!DONE) {
    /* check for stuff */
  }
  return 0;
}
上面的代码示例使用100%cpu直到DONE为真.如何实现一个循环的程序,只在DONE时终止,但不使用100%cpu?现代语言使用像App.ProcessMessages之类的东西来让操作系统暂时控制,然后返回循环.
我是C的新手,显然......使用最新的GCC,linux和windows(便携式解决方案会很棒!)
我遇到了这个问题,询问如何在C中的main()之前执行代码,并提到C++的策略.我主要住在应用程序空间,所以在main()之前执行从未发生过.什么样的东西需要这种技术?
我想知道是否有一种简单的方法来访问IOS中的主窗口或视图.类似的东西:
[UIScreen mainScreen]
谢谢.
我有一些代码:
object Main extends App
{
    val NameTemplate = """^([A-Za-z]+)_(\d+)\.png""".r
    override def main (args:Array[String])
    {
        // Why is NameTemplate null here?
    }
}
为什么NameTemplate不在main方法中初始化?
我对C#很新,并且已经创建了一个我想在我的主类中使用的类.usingcmd说,这两个类在不同的文件中,但当我尝试将一个类导入到另一个文件中时
找不到类型或命名空间名称"MyClass"(您是否缺少using指令或程序集引用?
我知道在Java中我不得不搞砸CLASSPATH这样的事情,但我不知道C#.
额外细节:
你可能已经想到了,我正在编译并通过命令提示符执行.我正在编译我的非主类/target:library(我听说只有主类应该是.exe文件).
我的代码看起来像这样:
public class MyClass {
    void stuff() {
    }
}
和我的主要课程:
using System;
using MyClass;
public class MyMainClass {
    static void Main() {
        MyClass test = new MyClass();
        /* Doesn't work */
    }
}
我试图用我的非主类包含namespace MyNamespace { }并导入它,但它也不起作用.