我偶然发现了使用按位运算符的JavaScript情况.逻辑上,按位运算符应该具有比等于运算符更高的优先级,例如
if val & 10 == 10
alert('flag set')
Run Code Online (Sandbox Code Playgroud)
但看起来这个代码会以另一种方式工作,因为在JavaScript中,按位运算符的优先级低于等式运算符(参见Mozilla的JS参考).上面的代码总是返回0任何有效的数值val,因为结果val & true是0.因此,正确的方法是将括号放在按位表达式周围:
if (val & 10) == 10
alert('flag set')
Run Code Online (Sandbox Code Playgroud)
我挖出了这个问题的历史,看起来这种行为来自于K&R的C时代,其中逻辑&&和||运算符是按比例添加的.就C中的逻辑陈述而言:
if (x == 1 & y == 0) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
有一个完美的感觉.但它在按位逻辑方面没有任何意义.
C++,Java,Objective-C,PHP,C#,最后Javascript也有同样的方式.Python,Ruby,Go反过来说.
您是否知道任何原因(除了来自C的遗产之外)使编程语言的设计者遵循C的优先规则?
我有一个"简单"的问题.我试着在surfaceview上画画.布局XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<SurfaceView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imagesurface"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="#00ff00">
</SurfaceView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Activity是SurfaceHolder.Callback:
public class OpenCvonAndroidGTDforHOGActivity extends Activity implements SurfaceHolder.Callback{
private SurfaceHolder _surfaceHolder;
private SurfaceView _surfaceView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_surfaceView = (SurfaceView)findViewById(R.id.imagesurface);
_surfaceHolder = _surfaceView.getHolder();
_surfaceHolder.addCallback(this);
_surfaceView.setWillNotDraw(false);
}
protected void onDraw(Canvas canvas) {
canvas.drawRGB(255, 0, 255);
}
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = null;
try …Run Code Online (Sandbox Code Playgroud) 考虑一个带有以下约束的实时GNU/Linux发行版:所有软件都应该包含在一个initrd映像中(这导致它的大小),并且内核包含尽可能少的静态编译模块.
考虑所描述的发行版的启动过程:引导加载程序(例如grub或isolinux)加载内核,然后内核将initrd加载并提取到内存中.在提取期间(在旧计算机上花费20-30秒)屏幕上没有任何反应.
我想知道,在initrd提取过程中是否有现成的解决方案显示启动画面?如果没有,请您评论以下想法:
将一个例如600x480x8bit的图像静态编译到内核中,并在提取initrd时以某种方式将其刷新到帧缓冲区中.
这样做,但强制加载一个特定的视频驱动程序(例如VESA)并入侵其代码,而不是内核的帧缓冲区.
谢谢.
有人可以解释一下,为什么很多程序都有这样的图标路径:/ usr/share/program/icons/hicolor/16x16/...
我不明白的是为什么高彩色,为什么16×16×16,32×32等.
是否有任何功能(例如在GTK中)从这种路径中自动获取正确的图标?
谢谢!
从git迁移到mercurial(不是我的个人偏好:)我遇到了一个问题:hg convert将git分支转换为书签.有没有办法将书签转换为命名的hg分支?甚至是否需要,为什么?谢谢!
任何人都可以帮助我理解,这段代码中发生了什么:
(defn- make-edit-mode-container [widget]
(let [input-container (template/node [:input.editable-edit-mode {:type "text"}])
ghandler (goog.events.KeyHandler. input-container)]
(set! (. input-container -gEditableHandler) ghandler)
;; ...
;; ...
input-container))
Run Code Online (Sandbox Code Playgroud)
据我所知,这里声明了一个私有函数,它接受一个widget参数.local-scope变量input-container是一个节点(实际上它是一个dommy.template节点),它是一个HTML <input type="text" class="editable-edit-mode">元素.
我无法理解的是(goog.events.KeyHandler. input-container)(例如,最后一点是做什么goog.events.Keyhandler).
因此,AFAIU (. input-container -gEditableHandler)是会员访问权限,但后来-gEditableHandler来自哪里,破折号意味着什么?
提前致谢.
我一直在尝试用mapClojure中的作用,并想知道,什么是应用的最佳实践map的map集合,因此:
(map #(pprint (str %1 " " %2)) {:hello 1 :world 2})
Run Code Online (Sandbox Code Playgroud)
输出(订单现在并不重要):
:hello 1
:world 2
Run Code Online (Sandbox Code Playgroud)
我的主意是:
(def my-map {:hello 1 :world 2})
(map #(pprint (str %1 " " %2)) (keys my-map) (vals my-map))
Run Code Online (Sandbox Code Playgroud)
但!我没有在文档中找到任何证据证明Clojure(或例如ClojureScript)保证序列keys和vals序列是相互保留的.
另一个想法是:
(map #(pprint (str (first %1) " " (rest %1))) my-map)
Run Code Online (Sandbox Code Playgroud)
这不是那么好,因为它与普通%1和%2.
我相信有更好的方法来做到这一点.如果你知道的话,请你分享一下吗?提前致谢!
考虑一个类的实例:
class Car(object):
def __init__(self):
self.engine = None
Run Code Online (Sandbox Code Playgroud)
还有一个修改该实例的函数:
def add_engine(car):
car.engine = 'V6'
Run Code Online (Sandbox Code Playgroud)
Python没有隐含的技术指出将修改参数.我能想到的最好的解决方案是返回修改后的对象(即使它将作为参数传递给同一个对象):
def add_engine(car):
car.engine = 'V6'
return car
Run Code Online (Sandbox Code Playgroud)
你会如何解决这个设计问题?
-
伙计们,非常感谢你的回答.你的建议有助于清除我脑子里的烂摊子:)
有人可以解释一下jQuery的getScript()功能吗?
考虑一个javascript文件test.js:
var tmp = 'a variable';
alert('here');
Run Code Online (Sandbox Code Playgroud)
当test.js通过html <script>标签加载时,一切正常:tmp全局范围内的变量可用,并出现一个消息框.
我试图通过此代码获得类似的行为:
<script>
$(document).ready(function() {
$.getScript("static/js/proto/test.js");
setTimeout(function() {
// at this point tmp should be available
// in the global scope
alert(tmp);
} , 2000); // 2 seconds timeout
}
</script>
Run Code Online (Sandbox Code Playgroud)
但浏览器的错误控制台报告"未定义的变量tmp"错误.我究竟做错了什么?谢谢.