小编Vas*_*asu的帖子

"x = x || 0"的目的是什么?

在查看我在网上找到的一些代码时,我发现了这个特殊的代码行(Javascript):

function values(b) {
    this.b = b || 0;
}
Run Code Online (Sandbox Code Playgroud)

我根本想不出来的目的是什么||0.如果我没有弄错,因为||返回一个布尔值,这个值b将始终是参数的布尔等效值.如果b传递为真(即1true),那么b应该是真的; 否则,使用其中一个false值(即.NaN,0),这应该是假的.然后我解释如下:

btrue:

this.b = true || false; // will evaluate to true
Run Code Online (Sandbox Code Playgroud)

bfalse:

this.b = false || false; // will evaluate to false
Run Code Online (Sandbox Code Playgroud)

我只是没有看到通过添加获得的价值||0.有人可以向我解释一下吗?

javascript

9
推荐指数
1
解决办法
3594
查看次数

MouseDragged和MouseMoved在Java Applet中不起作用

我正在为我正在创建的游戏制作地图生成程序,所以我试图能够使用我的鼠标修改地图上的各个图块.我已经成功实现了点击图块并更改其值(从4路图块到2行图块)的功能,但是我无法使用mouseDragged工作.根据Java文档,我已经将mouseDragged接口正确实现到我的MouseEventHandler中,但是当我拖动鼠标并移动我的鼠标时,这些事件都没有跳过并扔掉我给他们扔的println文本现在.如果有人能说清楚为什么这对我不起作用,我会喜欢的.谢谢!

一个侧面问题:如果有人有任何更好的方法来尝试生成这样的地图,或任何(可能是比我做的更好)其他检测单个鼠标的方法压在瓷砖上,我很乐意听到它.这只是我第一次使用这种东西,所以我很缺乏经验,并且会喜欢一些建议.

至于代码本身:

文件1:OneQuestMapgen.java

package OneQuestMapgen;

import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.*;

import tiles.Tile;
import tiles.TileSet;

public class OneQuestMapgen extends JApplet{

    /**
     * 
     */

    public static OneQuestMapgen instance;

    ArrayList<ArrayList<Tile>> map = new ArrayList<ArrayList<Tile>>();
    TileSet tileSet = new TileSet();

    public void init(){
        this.setSize(950,600);
    }

    public void start(){
        this.addMouseListener(new MouseEventListener(this));

        int tileSize = tileSet.get("grasslands")[1].getHeight();

        for (int i = 0; i < getHeight(); i += tileSize) {
            ArrayList<Tile> temp = new ArrayList<Tile>();
            for (int j = 0; j < getWidth(); j += tileSize) …
Run Code Online (Sandbox Code Playgroud)

java swing event-handling mouseevent japplet

6
推荐指数
1
解决办法
6155
查看次数

为什么s [len(s)-1:-1:-1]不起作用?

在查看一些python字符串和函数时,我发现了这个奇怪的python怪癖:

s = "hello"
print s[::-1]
Run Code Online (Sandbox Code Playgroud)

然后打印: olleh

但是,print s[len(s)-1:-1:-1]不起作用.我的理解是它应该从最后一个元素迭代s[len(s)-1]到第一个元素s[0].但是,它只打印一个空字符串'',我相信这是因为在一些给定长度的字符串中(比如5)s[4] == s[-1],. 但是,我不明白为什么python决定使用-1而不是4实际的len(s).

此外,s[len(s):0:-1] + s[0]工作.为什么是len(s)有效的索引?python是否只是len(s)任意转换为0?

PS这是在Python 2.7.8中,我不确定它是否也适用于3.xx

编辑:确认在Python 3中是相同的

python string string-length slice

5
推荐指数
1
解决办法
1162
查看次数

从 docker-compose 构建和使用 docker 镜像

我有一个 Dockerfile,它创建了一个包含我的图像需要运行的所有依赖项的图像。然后,我将文件挂载为只读数据卷,并将各种文件设置为入口点。虽然这意味着我不需要有多个 Dockerfile,但出于某种原因,每次我向 docker-compose 文件添加新服务时,我都会创建一个新图像(尽管它看起来只是从缓存中提取)。有没有办法让 docker-compose 文件构建一次镜像,然后让所有服务都依赖于这个新构建的镜像?

我知道可以单独构建映像,为其命名,然后让 docker-compose 文件引用该映像,但这需要 2 个命令,而不是docker-compose up我现在使用的单个命令。

这是我的docker images输出的样子。您可以看到每个服务都在创建自己的映像,我不喜欢这种情况。我不完全确定这是否意味着每个图像在磁盘上占用了额外的 1.3GB,或者它们是否都只是引用相同的基本图像(我猜是后者,但很想知道),但它仍然会污染 docker 图像列表。

REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
docker_http_server_1   latest              a6eac9198c44        5 weeks ago         1.315 GB
docker_test_client     latest              a6eac9198c44        5 weeks ago         1.315 GB
docker_test_client_3   latest              a6eac9198c44        5 weeks ago         1.315 GB
meh                    latest              a6eac9198c44        5 weeks ago         1.315 GB
docker_data_server_1   latest              a6eac9198c44        5 weeks ago         1.315 GB
docker_server1         latest              a6eac9198c44        5 weeks ago         1.315 GB
docker_server2         latest              a6eac9198c44 …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

5
推荐指数
1
解决办法
5711
查看次数

如何在C#中模拟鼠标点击?(我一直收到错误)

好吧,好吧,这就是事情.我使用了这个精彩的网站,找到了一个代码片段,帮助我创建了一个基本的点击脚本.问题是我在调试时遇到错误 - 指向我的鼠标点击线.下面,我在代码标签中添加了错误.

PInvokeStackImbalance was detected
Message: A call to PInvoke function 'MagicMouse!MagicMouse.Form1::mouse_event' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
Run Code Online (Sandbox Code Playgroud)

我尽了最大的努力,并经历了几次谷歌搜索..但我找不到任何东西,也许我只是做错了.无论哪种方式,如果你们能帮助我,我会很高兴.以下是我的实际代码.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;

namespace MagicMouse
{
    public partial class Form1 : Form
    {
        //all …
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
2176
查看次数

两个补码符号扩展python?

我想知道是否有一种方法可以像使用Python中的C/C++那样使用标准库(最好是在bitarray上)进行二进制补码符号扩展.

C/C++:

// Example program
#include <iostream>
#include <string>

int main()
{
    int x = 0xFF;
    x <<= (32 - 8);
    x >>= (32 - 8);
    std::cout << x;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我编写的Python函数(在我的测试中)完成同样的事情.我只是想知道是否有内置(或更快)的方式:

def sign_extend(value, bits):
    highest_bit_mask = 1 << (bits - 1)
    remainder = 0
    for i in xrange(bits - 1):
        remainder = (remainder << 1) + 1

    if value & highest_bit_mask == highest_bit_mask:
        value = (value & remainder) - highest_bit_mask
    else:
        value = value & remainder
    return value
Run Code Online (Sandbox Code Playgroud)

python twos-complement

3
推荐指数
1
解决办法
4126
查看次数

如何从函数返回向量

我试图从函数返回一个向量,但我似乎遇到了一些问题....

目前,这是我得到的最好的:

int* OptimizedSkillLevels(int skillLevel, const int numSkills, int duration, FragmentOptimizationParameters FOP){

        //some code to work with some things was here

        vector<int> skills(numSkills);

        int skillIncrement = 0;
        while (skillLevel > FOP.levelDifference){
        skills[skillIncrement%numSkills] += FOP.levelDifference;
        skillLevel-= FOP.levelDifference;
        skillIncrement++;
        }
        skills[skills.size()-1] += skillLevel;

        //at this point, the vector skills is full of the correct values, which is what really matters.
    }

    int* skillsArr = &skills[0];
    return skillsArr;
}
Run Code Online (Sandbox Code Playgroud)

虽然当我从这个函数调用访问它时,这似乎给了我垃圾值:

cout << OptimizedSkillLevels(skillLevels[i], userMaxNumSkills, durations[i], FOPs[FOPindex])[j] << ", ";
Run Code Online (Sandbox Code Playgroud)

具体来说,-17891602无论是什么,我每次都会从中获益[j] …

c++ arrays pointers vector

2
推荐指数
1
解决办法
8838
查看次数

卵石通讯方式

我现在一直在用卵石试验一两天,我已经达到了一点停滞状态.也就是说,我似乎无法弄清楚某些事情是如何相关的.我想要做的是从Android上的应用程序获取数据以发送到卵石,然后为鹅卵石做一些有效的数据.

我已经意识到你在一个Android应用程序中使用PebbleKit API,以便使用诸如之类的东西与卵石进行通信sendDataToPebble().在那之后,我不太确定该怎么做.

使用cloudpebble.net,我使用pebble SDK在C中创建了一个应用程序来确认数据(使用他们网站上建议的处理程序).但是,我最近发现在整个混音中也可能有javascript,我只是不知道如何与js交互.

是否有可能拥有所有ack/nack数据,并且后续处理/显示数据完全通过javascript完成,完全避免C,或者我是否需要在c中接收数据,然后将其发送到javascript一些如何为它使用(我目前不知道该怎么做).

相信appmessage当JS应用程序收到数据时会触发某种事件(我认为),但是,我认为这只是来自C应用程序?

因此,大多数情况下,我的困惑在于JS如何融入整个组合.如果有人能为我清楚,我会真诚地感激它.

编辑:我应该补充一点,我正在尝试使用cloudpebble.net中的pebble.js创建一个应用程序.

谢谢!

javascript android pebble-watch pebble-sdk cloudpebble

2
推荐指数
1
解决办法
1507
查看次数