我正在尝试使用三元运算符来缩短代码.
这是我的原始代码:
if ($type = "recent") {
$OrderType = "sid DESC";
} elseif ($type = "pop") {
$OrderType = "counter DESC";
} else {
$OrderType = "RAND()";
}
Run Code Online (Sandbox Code Playgroud)
如何在代码中使用三元运算符而不是ifs/elses?
$OrderType = ($type = "recent") ? "sid DESC" : "counter DESC" ;
Run Code Online (Sandbox Code Playgroud)
这是我尝试的代码,但不知道如何添加" elseif部分".
#!/bin/bash
if [ ! $1 ]
then
echo "no param"
else
export FAV_COLOR=$1
echo "My fav color is ${FAV_COLOR}"
fi
Run Code Online (Sandbox Code Playgroud)
这不符合我的预期:
>favcol.sh blue
My fav color is FAV_COLOR=blue
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我已经获得了一个java api,用于通过基于回调的样式连接和通过专用总线进行通信.我目前正在scala中实现一个概念验证应用程序,我正在尝试研究如何生成一个稍微更惯用的scala接口.
典型(简化)应用程序在Java中可能看起来像这样:
DataType type = new DataType();
BusConnector con = new BusConnector();
con.waitForData(type.getClass()).addListener(new IListener<DataType>() {
public void onEvent(DataType t) {
//some stuff happens in here, and then we need some more data
con.waitForData(anotherType.getClass()).addListener(new IListener<anotherType>() {
public void onEvent(anotherType t) {
//we do more stuff in here, and so on
}
});
}
});
//now we've got the behaviours set up we call
con.start();
Run Code Online (Sandbox Code Playgroud)
在scala中,我可以明确地定义从(T => Unit)到IListener的隐式转换,这肯定会使事情变得更简单:
implicit def func2Ilistener[T](f: (T => Unit)) : IListener[T] = new IListener[T]{
def onEvent(t:T) …Run Code Online (Sandbox Code Playgroud) 我有一个txt文件有一些行......我的代码是:
string line;
ifstream myfile("c:\\main.txt");
bool passport = true;
while(passport==true){
int pos1=0;
cout<<setw(20)<<"PassPort_Number : ";
cin>>add.Id ;
if (myfile.is_open())
{
while(!myfile.eof()){
getline(myfile,line);
pos1+=line.find(add.Id);
cout<<pos1;
}
}
if(pos1<0)
passport=false;
else {
cout<<"PassPort Number tekrariye :d"<<endl;
}
}
Run Code Online (Sandbox Code Playgroud)
第一次一切都好,但在第二次运行时它不会进入第二次(而(!myfile.eof())...我的代码出了什么问题?
当它到达文本文件的末尾时,它不会在下一个循环中返回到第一个文件...我怎么能回到第一个文本文件?
我正在编写一个Android应用程序,我想在主屏幕上放置一个对话框或视图,以便用户可以输入文本而无需跳转到我的完整应用程序.我似乎无法让这个工作.如果我提出一个对话框(即使在透明活动中),我的应用程序也会启动.
如果您不知道我在说什么,请查看Facebook小部件.我想复制一个类似的行为来点击"你在想什么?" 框.
在此先感谢您的帮助!
布赖恩
我在C#中的测试代码:
namespace DSnA
{
public abstract class Test : IComparable
{
}
}
Run Code Online (Sandbox Code Playgroud)
导致以下编译器错误:
error CS0535: 'DSnA.Test' does not implement interface member
'System.IComparable.CompareTo(object)'
Run Code Online (Sandbox Code Playgroud)
由于该类Test是一个抽象类,为什么编译器要求它实现接口?这个要求不应该仅仅是具体课程的必修课吗?
我有一个涉及建模状态机的问题.
我设法做了一点知识工程和"逆向工程"一组原始确定性规则,确定状态和状态转换.
我想知道最佳做法是什么:
如何严格测试我的状态和状态转换,以确保系统不会最终处于未确定状态.
如何强制执行状态转换要求(例如,应该不可能直接从stateFoo转到StateFooBar,即向每个状态灌输关于它可以转换到的状态的'知识'.
理想情况下,我想尽可能使用基于模式的干净设计和模板.
我确实需要一个地方开始,我会感激任何指针(没有双关语意),这是我发送的方式.
我使用jqGrid包含许多包含布尔信息的列,这些列在表格中显示为复选框(请参阅http://www.ok-soft-gmbh.com/VerticalHeaders/TestFixedO.htm作为示例).为了更紧凑地显示信息,我使用垂直列标题.它运行良好,适用于所有浏览器的jqGrid(请参阅我在jqGrid论坛中与Tony Tomov的讨论http://www.trirand.com/blog/?page_id=393/feature-request/headers-with-vertical-orientation/),但在IE中垂直文字模糊,看起来不够好(打开IE上面的链接,你会看到我的意思).我被问到用户为什么文本显示得如此奇怪.所以我正在考虑使用基于JavaScript的SVG库,如SVG Web(http://code.google.com/p/svgweb/)或Raphaël(http://raphaeljs.com/).SVG非常强大,很难找到一个好的例子.我只需要显示垂直文本(-90 grad,自下而上)并尽可能使用,而无需在绝对定位模式下工作.
所以还有一次我的问题:我需要有可能在表头的元素内显示垂直文本(-90 grad rotation)<td>.我想使用基于JavaScript的SVG库,如SVG Web或Raphaël.解决方案必须支持IE6.有没有人有一个很好的参考例子可以帮助我做到这一点?如果有人发布了问题的完整解决方案,我会很高兴.
确切地说,这是我目前的解决方案:我定义
.rotate
{
-webkit-transform: rotate(-90deg); /* Safari 3.1+, Chrome */
-moz-transform: rotate(-90deg); /* Firefox 3.5+ */
-o-transform: rotate(-90deg); /* Opera starting with 10.50 */
/* Internet Explorer: */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); /* IE6, IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)" /* IE8 */;
}
Run Code Online (Sandbox Code Playgroud)
定义RotateCheckboxColumnHeaders功能
var RotateCheckboxColumnHeaders = function (grid, headerHeight) …Run Code Online (Sandbox Code Playgroud) 我知道Javascript中的不同事件模型(WC3模型与Microsoft模型),以及冒泡和捕获之间的区别.但是,几个小时后阅读有关此问题的各种文章,我仍然不确定如何正确编码以下看似简单的行为:
如果我有一个外部元素div和一个内部div元素,我希望当鼠标离开外部div时触发一个鼠标移出事件.当鼠标从内部div跳到外部div时,什么都不应该发生,当鼠标从外部div跨越到内部div时,什么都不应该发生.只有当鼠标从外部div移动到周围页面时才会触发该事件.
<div id="outer" style = "width:20em; height:20em; border:1px solid #F00" align = "center" onmouseout="alert('mouseout event!')" >
<div id="inner" style = "width:18em; height:18em; border:1px solid #000"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,如果我将"mouseout"事件放在outer-div上,当鼠标从内部div移动到周围页面时会触发两个鼠标移出事件,因为当鼠标从内部移动到外部时事件会触发一次,然后当它从外部移动到周围页面时再次.
我知道我可以使用取消事件ev.stopPropagation(),所以我尝试使用inner-div注册一个事件处理程序来取消事件传播.但是,当鼠标从outer-div移动到inner-div时,这不会阻止事件触发.
所以,除非我忽视某些东西,否则在我看来,如果没有复杂的鼠标跟踪功能,这种行为是无法实现的.在将来,我计划使用更高级的框架(如JQuery)重新实现许多代码,但是现在,我想知道是否有一种简单的方法可以在常规Javascript中实现上述行为.