小编flu*_*ffy的帖子

Python'self'关键字

我是Python新手(通常使用C#),在过去几天开始使用它.

在一个类中,您是否需要对该类数据成员和方法的任何调用加前缀?那么,如果我正在调用一个方法或从该类中获取一个值,那么我需要使用self.method()或者self.intvalue,例如?

我只是想检查一下我还没有遇到过那种冗长的方式.

python

57
推荐指数
3
解决办法
6万
查看次数

无论如何,JavaScript中的`new`是什么意思?

关于构造函数在Javascrpt中的工作原理,我感到非常困惑.尽管使用该语言已有好几年了(大多数情况下它就像是LISP的半命令版本),但我想更多地了解对象应该如何工作.

鉴于此代码:

function Foo(x) {
    return {
        bar: function() { return x; }
    };
}
Run Code Online (Sandbox Code Playgroud)

打电话myFoo = Foo(5)和有myFoo = new Foo(5)什么区别?或者,换句话说,Javascript中的构造函数究竟是什么的?

javascript oop

40
推荐指数
3
解决办法
8288
查看次数

排除特定类型的类型提示

在Python中,是否可以声明一个类型提示来排除某些类型的匹配?

例如,有没有办法声明“ typing.Iterableexcept not str ”之类的类型提示?

python types

22
推荐指数
1
解决办法
990
查看次数

分配和比较go的等同时间?

在Go中你可以做到:

if foo := bar() ; foo != nil {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在C/C++中,您可以:

while ((foo = bar()) != NULL) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,Go的语法似乎没有提供在while循环中进行赋值和比较的任何等效方法; Go已替换while为特定的调用for(例如for a,相当于for ; a ;).简单地尝试使用if版本语法会使解析器混淆,因为它期望有第三个语句.

我可以说:

for foo := bar() ; foo != nil ; foo = bar() {
    ....
}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,bar()调用相当长,复杂,并且不容易分解为自己的函数(虽然我可以做一些事情,比如声明一个本地func调用,但这仍然会降低代码的清晰度).

现在我在做:

for {
    foo := bar();
    if foo == nil { break; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

但这似乎是不洁净的,因为它将循环标准与循环语句本身分开,并且因为它依赖于它break.

那么,在Go中的while循环中是否有一种干净,惯用的方式进行分配和比较?这是一个常见的用例,我无法想象没有办法做到这一点.

go

19
推荐指数
1
解决办法
2027
查看次数

AudioTrack的全球死亡

我有一个应用程序,其中有几个线程,每个线程都被设置为单独的AudioTrack MODE_STREAM.在应用程序之间切换工作正常,当应用程序正常关闭时,它似乎正确关闭所有内容.

但是,如果应用程序在外部终止,例如从调试器终止,或者因为我刚刚在旧版本运行时安装了新版本,似乎全局AudioMixer中的某些状态搞砸了,我得到类似logcat的输出:

09-16 14:50:38.965   298  7150 W AudioTrack: obtainBuffer timed out (is the CPU pegged?) 0x83c2348 user=00000eb3, server=00000000
09-16 14:50:39.025  7066  7132 W AudioTrack: obtainBuffer timed out (is the CPU pegged?) 0x8249d40 user=00002000, server=00000000
09-16 14:50:40.277   298  7156 W AudioTrack: obtainBuffer timed out (is the CPU pegged?) 0x84cb810 user=00000eb3, server=00000000
Run Code Online (Sandbox Code Playgroud)

并且没有使用AudioTrack的应用程序能够再次播放音频,直到我重新启动设备.在此特定日志片段中,PID 298是system_server,7066是应用程序的新实例.

我认为发生的事情是AudioTrack在作者线程有机会清理之前就消失了.这让我觉得我应该做些什么来清理.我已经俘获我的活动的onStop,并onDestroy和那些具有关闭我的音频线,但有这个需要做的另一个地方?

另外,有更好的方法来清理AudioTrack吗?看起来Android的这一部分特别脆弱,但是我无法想象每个人都会使用SoundPool和MediaPlayer来处理所有事情,因为这些API非常有限且非常繁琐(而且两者似乎都以不同的方式包装AudioTrack).

audio android

12
推荐指数
1
解决办法
3923
查看次数

C++ 11 lambda的参数/存储类型

在C++ 11中,如何声明一个将lambda表达式作为参数的函数?我可以在网上找到大量资源来声明lambdas或将它们作为模板参数,但我真正想做的是能够使用lambdas作为易于声明的回调处理程序,类似于闭包所能实现的在Objective-C中的JavaScript和代码块中.

基本上,我想用lambda替换的经典C++构造是这样的:

class MyCallback {
public:
    virtual ~MyCallback() {}
    virtual void operator(int arg) = 0;
};

void registerCallback(const std::shared_ptr<MyCallback> &);

void foo(void) {
    int a, b, c;
    class LocalCallback: public MyCallback {
        int a, b, c;
    public:
        LocalCallback(int a, int b, int c): a(a), b(b), c(c) {}
        void operator(int arg) { std::cout << (a+b+c)*arg << std::endl; }
    };
    registerCallback(std::shared_ptr<MyCallback>(new LocalCallback(a,b,c)));
}
Run Code Online (Sandbox Code Playgroud)

这将被简化为:

void registerCallback(/* WHAT GOES HERE? */);

void foo(void) {
    int a, b, c;
    registerCallback([=](int arg){std::cout << (a+b+c)*arg …
Run Code Online (Sandbox Code Playgroud)

c++ lambda closures c++11

11
推荐指数
3
解决办法
3463
查看次数

具有Waveform.js和scrubber功能的Soundcloud自定义播放器

我正在为我的网站使用自定义Soundcloud播放器waveform.js来生成波形.它工作得很好,但缺乏擦洗功能.我该如何添加?

我不是一个JS向导,仍然在学习我的方式所以我会非常感谢任何帮助或建议!

更新IV:我找到了一种将画布生成的波形包含在原始SoundCloud自定义播放器中的新方法sc-player.js.

首先,我找到了一行代码,负责播放器的HTML结构,并添加id="waveform"sc-waveform container第529行:

.append('<div class="sc-time-span"><div class="sc-waveform-container" id="waveform">
       </div><div class="sc-buffer"></div><div class="sc-played"></div></div>')
Run Code Online (Sandbox Code Playgroud)

然后我更新了676行,替换imgcanvas

    $available = $scrubber.find('.sc-waveform-container canvas'),
Run Code Online (Sandbox Code Playgroud)

接下来,我找到了一段代码,负责在340行嵌入波形的原始图像并将其评论出来:

 // $('.sc-waveform-container', $player).html('<img src="' + track.waveform_url +'" />');
Run Code Online (Sandbox Code Playgroud)

然后我在页面底部发布了以下代码:

<script>
    SC.get("/tracks/80348246", function(track){
        var waveform = new Waveform({
            container: document.getElementById("waveform"),
            height: 40,
            innerColor: '#ffffff'   
        });
        waveform.dataFromSoundCloudTrack(track); 
    });
    //----------- end of insterted waveform.js code ----------------------
</script>
Run Code Online (Sandbox Code Playgroud)

结果非常有希望,现在我有完全可定制的波形和洗涤器也正常工作.但是仍然有一些我想解决的问题.

  1. 在Chrome中,当我按下播放和暂停时,然后单击波形,曲目开始播放,但播放按钮不会改变其状态.然后需要双击它来停止轨道.

  2. 缓冲区和进度条仍然只是sc-player后台的div.我怎么能联系sc-player.jswaveform.js在一起,使波形画布上产生(例如如在进度http://waveformjs.org/)?

任何想法如何解决这些问题?

这是现场网站上的播放器:http: //www.code.spik3s.com/rnr/

javascript html5 waveform soundcloud

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

基于图书馆存在有条件地建立目标

我有一个大型的跨平台项目,需要在不同的地方建设; 在某些地方,可能有不同的UI工具包,声音API等,我试图找出自动配置哪些目标根据哪些库存在进行配置的最佳方法.

我正在尝试的代码是,例如:

find_library(PC_EGL EGL)
find_library(PC_GLESv2 GLESv2)
find_library(PC_Xxf86vm Xxf86vm)
if (DEFINED PC_EGL AND DEFINED PC_GLESv2 AND DEFINED PC_Xxf86vm)
  add_executable(foo foo.cpp)
  target_link_libraries(foo ${PC_EGL} ${PC_GLESv2} ${PC_Xxf86vm})
endif()
Run Code Online (Sandbox Code Playgroud)

但是,如果我在没有libGLESv2的系统上构建它,我会收到错误:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
PC_GLESv2
    linked by target "foo" in directory /path/to/platform
Run Code Online (Sandbox Code Playgroud)

find_library文档暗示变量PC_EGL_NOTFOUND应该被设置,但它不是(CMake 2.8.5).那么,使用find_library确定目标是否应该存在的适当方法是什么?好像在用

if (NOT PC_EGL MATCH "-NOTFOUND")
Run Code Online (Sandbox Code Playgroud)

有点脆弱和繁琐,所以有没有一个更好的机制来确定一个基本上找到一个库的CMake命令路径?

build cmake

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

评论是否会降低编译语言的速度?

这里已经多次询问过有关解释语言或R的问题,但我没有找到任何关于编译语言的信息,特别是C#.

根据我读到的内容似乎可以忽略不计,但它仍然会导致解释语言的速度减慢: 评论是否会减慢解释语言的速度?

编译语言怎么样?!他们只减慢编译过程但不执行?

c c#

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

如何让flex-wrap平衡其包裹的物品?

我正在制作响应式布局,在较小的屏幕上,侧边栏<ul>变成了display: flexwith flex-wrap: wrap,并且项目的样式为flex-grow: 1。大多数时候这看起来都很好:

具有平衡包装的导航菜单

然而,当只有几个项目溢出时,例如在稍大的屏幕上,这看起来很糟糕:

导航菜单的环绕不平衡

有没有什么方法可以flex-box尝试根据每行平衡的总项目宽度来包装事物?例如,在第二个示例中,“People”(也许还有“Protocols”)流到第二行会更有意义。

或者,我应该采取另一种方法来布置此菜单吗?

jsfiddle 链接

html css flexbox

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

标签 统计

javascript ×2

python ×2

android ×1

audio ×1

build ×1

c ×1

c# ×1

c++ ×1

c++11 ×1

closures ×1

cmake ×1

css ×1

flexbox ×1

go ×1

html ×1

html5 ×1

lambda ×1

oop ×1

soundcloud ×1

types ×1

waveform ×1