我刚看到关于条件运算符的维基百科文章中的这段代码:
Vehicle new_vehicle = arg == 'B' ? bus :
arg == 'A' ? airplane :
arg == 'T' ? train :
arg == 'C' ? car :
arg == 'H' ? horse :
feet;
Run Code Online (Sandbox Code Playgroud)
我已经改变了一点代码,但想法是一样的.您会发现条件运算符的这种使用是否可以接受?它比if- elseconstruct 更简洁,并且使用一个开关肯定会为bug提供一整套新的机会(任何人都会堕落).此外,if- elses并且switch不能用作R值,因此您必须先创建变量,对其进行初始化,然后根据需要进行分配.
我真的很喜欢这个,但我想知道其他人的想法.
但格式化至关重要.
编辑:我还是喜欢这个.但我理解那些说" switch声明是为此做出的"的人.好吧,也许是这样.但是如果条件是返回的函数调用bool怎么办?或者其他一百万件你无法打开的东西.
你开关恋人真的试图说服我,一个巨大的if- else链比较好?是的,不知道如何使用条件运算符的程序员将无法理解这一点.他们应该学习如何使用它.这不是奥术.
完整代码:http://friendpaste.com/5TdtGPZaEK0DbDBa2DCUyB
class Options
def method_missing(method, *args, &block)
p method
end
end
options = Options.new
options.instance_eval do
foo
foo = "It aint easy being cheesy!"
end
puts "#===---"
options.foo
options.foo = "It still aint easy being cheesy!"
Run Code Online (Sandbox Code Playgroud)
返回:
:foo
#===---
:foo
:foo=
Run Code Online (Sandbox Code Playgroud)
因为它foo = ""在instance_eval中被视为局部变量,所以它不会将其视为一种方法.
我如何让instance_eval将其视为一种方法?
我试图使用powershell来获取文件的文件版本.如果我右键单击该文件并查看该版本,则会显示一个值.以下是我尝试这样做的方法:
$path = "MSDE2000A";
$info = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path);
Run Code Online (Sandbox Code Playgroud)
这是它抛出的异常信息:
Exception calling "GetVersionInfo" with "1" argument(s): "MSDE2000A.exe"
At line:1 char:58
+ $f = [system.diagnostics.fileversioninfo]::getversioninfo <<<< ("MSDE2000A.exe")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Run Code Online (Sandbox Code Playgroud)
我检查的每个文件都有相同的结果.但是,如果我的路径是c:\ windows \notepad.exe(如示例中所示),它将按预期工作.这是怎么回事?
我在标题中指定了字符集,我是否需要在meta/head/html中指定它?
我刚刚第一次在eclipse中安装了一个Maven插件.现在在eclipse启动时有一条消息,我应该在JDK中启动eclipse而不是jre以使Maven组件运行良好.我在eclipse.ini中使用了一个-vm参数:
-vm C:\Program Files (x86)\Java\
Run Code Online (Sandbox Code Playgroud)
但重启后信息仍然存在.
我试过了:
C:\Program Files (x86)\Java\bin
Run Code Online (Sandbox Code Playgroud)
还有:
C:\Program Files (x86)\Java\bin\java.exe
Run Code Online (Sandbox Code Playgroud)
但没有改变.
如何在JDK中启动eclipse?
提前致谢.
我需要找到CPU的架构类型.我没有访问/ proc/cpuinfo,因为机器正在运行syslinux.我知道有一种方法可以使用内联ASM,但我相信我的语法不正确,因为我的变量iedx没有正确设置.
我和ASM一起苦苦挣扎,绝不是专家.如果有人有任何提示或能指出我正确的方向,我会非常感激.
static int is64Bit(void) {
int iedx = 0;
asm("mov %eax, 0x80000001");
asm("cpuid");
asm("mov %0, %%eax" : : "a" (iedx));
if ((iedx) && (1 << 29))
{
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 对于给定的URL,我想从数据库中获取hash-after-hash的年龄.所以对于网址来说thepage.php#Madonna,你会看到" 119!".
如何在URL中的哈希值后提取值?(我需要一个安全的全浏览器兼容的NON-JAVASCRIPT方式).我想像$ _GET ['哈希'之后'那样做.
我没有使用GET的原因是因为我想使用AJAX和jquery的历史插件.
基本上我想要的是使用ajax根据哈希后分配的值从服务器检索数据.
我正在编写代码,比较代表整数的2个字节.我想看看字节R是否与G的+ -10相同.我对代码的问题是在结尾附近的if-statment中进行比较.字节永远不会超出范围,即使它们应该.我确定问题来自于我如何添加/减去error_range,但我不知道有任何其他方法可以做到这一点.
我首先考虑将字节转换为整数但我在网上找不到任何帮助.如果这比我在这里做的更好,请告诉我该怎么做.
任何帮助表示赞赏!
const char ERROR_RANGE = 0x1010; //warning: overflow in implicit constant conversion
char R, G; /2 separate bytes
char buffer; //enough space for 1 byte
image = fopen(fileName,"r"); //open file
fread(&buffer, 1, 1, image); //read 1 byte
memcpy (&R,&buffer,1); //store it as R
fread(&buffer, 1, 1, image); //read 1 byte
memcpy (&G,&buffer,1); //store it as G
fclose(image);
if((R >= (G + ERROR_RANGE)) && (R <= (G - ERROR_RANGE)))
{
printf("Outside of range!\n");
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
是否有一个工作示例演示如何动态地在ListView中追加其他行?例如:
任何建议如何实现这一目标?
尼古拉斯
我在游戏世界中绘制建筑物,并使用以下代码对其进行着色:
GLfloat light_ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};
GLfloat light_position[] = {135.66f, 129.83f, 4.7f, 1.0f};
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glColorMaterial(GL_FRONT, GL_AMBIENT);
Run Code Online (Sandbox Code Playgroud)
效果很好。
但是,当我开始在世界上飞行时,灯光会对此做出反应,就好像世界是一个正在旋转的物体一样。因此,当我的相机角度改变时,灯光也会改变。
我如何还原该旋转?因此照明会认为我实际上并没有旋转世界,然后我可以使建筑物具有静态阴影,该阴影会根据太阳在天空上的位置而变化。
编辑:这是渲染代码:
int DrawGLScene()
{
// stuff
glLoadIdentity();
glRotatef(XROT, 1.0f, 0.0f, 0.0f);
glRotatef(YROT, 0.0f, 1.0f, 0.0f);
glRotatef(ZROT, 0.0f, 0.0f, 1.0f);
glTranslatef(-XPOS, -YPOS, -ZPOS);
// draw world
}
Run Code Online (Sandbox Code Playgroud)