javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

user-experience

chmod

css

content-type

variables

var

loops

iteration

std

c++-faq

Dagger2自定义范围:自定义范围(@ActivityScope)实际如何工作?

我正在阅读GitHub上的Dagger2 Component Scopes Test的源代码,并且看到了为名为Activity-level scopes的活动定义的“自定义范围”,但是我在其他项目中也看到了它,包括具有@PerActivity范围的4模块CleanArchitecture 。

但实际上,Activity-level scopes批注的代码如下:

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

import javax.inject.Scope;

/**
 * Created by joesteele on 2/15/15.
 */
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface ActivityScope {
}

它在模块中“神奇地”可用:

@Module
public class ActivityModule {
  @Provides @ActivityScope Picasso providePicasso(ComponentTest app, OkHttpClient client) {
    return new Picasso.Builder(app)
        .downloader(new OkHttpDownloader(client))
        .listener(new Picasso.Listener() {
          @Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception e) {
            Log.e("Picasso", "Failed to load image: " + uri.toString(), e);
          }
        })
        .build();
  }
}

或CleanArchitecture示例:

@Scope
@Retention(RUNTIME)
public @interface PerActivity {}

@PerActivity
@Component(dependencies = ApplicationComponent.class, modules = ActivityModule.class)
public interface ActivityComponent {
  //Exposed to sub-graphs.
  Activity activity();
}

@Module
public class ActivityModule {
  private final Activity activity;

  public ActivityModule(Activity activity) {
    this.activity = activity;
  }

  /**
  * Expose the activity to dependents in the graph.
  */
  @Provides @PerActivity Activity activity() {
    return this.activity;
  }
}

我可以清楚地看到这与JSR-330自定义作用域有关,但是我真的不明白在这里到底发生了什么,因此该代码启用了给定的模块和/或给定的模块所提供的功能。 取决于实际的Activity-level scopes生命周期,并且仅存在一个实例,但前提是该给定活动处于活动状态。

文档说:

Scope

Dagger 1 only supported a single scope: @Singleton. 
Dagger 2 allows users to any well-formed scope annotation. 
The Component docs describe the details of 
    how to properly apply scope to a component.

它说要看Component docs页面,但这给了我404。我也看到了,但是...

我是否可以寻求帮助,以澄清为什么指定此自定义范围可以神奇地使Activity-level scopes正常工作?

(答案是,子作用域可以从其超级作用域接收依赖关系,并且子作用域只要组件可以接受就可以存在。并且您需要在模块上指定作用域,并且需要指定组件依赖关系才能对一个超级作用域进行子作用域划分。 )

trans by 2020-08-10T11:09:25Z

javascript-$ .getJSON函数期间设置的变量只能在函数内访问

这可能是一个范围更广的问题。 我正在尝试在$ .getJSON函数中设置一个JSON对象,但我需要能够在回调之外使用该对象。

var jsonIssues = {};  // declare json variable

$.getJSON("url", function(data) {
    jsonIssues = data.Issues;
});

// jsonIssues not accessible here

在另一篇文章中也提出了类似的问题,共识是我需要对JSON对象做的任何事情都必须在回调函数中完成,而不能在其他任何地方访问。 真的没有办法继续在$ .getJSON回调之外继续访问/操作该JSON对象吗? 返回变量或设置全局变量怎么办?

我将不胜感激。 这似乎不正确...

更新:

尝试将$ .ajax()异步设置设置为false,并运行相同的代码,但是没有运气。 我尝试过的代码如下:

var jsonIssues = {};  // declare json variable

$.ajax({ async: false });

$.getJSON("url", function(data) {
    jsonIssues = data.Issues;
});

// jsonIssues still not accessible here

另外,我也收到了一些回应,称全局变量应该可以正常工作。 我应该澄清所有这些代码都在$(document).ready(function() {之内。要设置全局变量,我是否应该在document.ready之前声明它? 因此:

var jsonIssues = {};

$(document).ready(function() {

  var jsonIssues = {};  // declare json variable

  $.getJSON("url", function(data) {
      jsonIssues = data.Issues;
  });

  // now accessible?
}

我的印象是,在document.ready中声明的变量应该可以在document.ready的任何部分中“全局”访问和修改,包括$ .getJSON回调函数之类的子函数。 我可能需要阅读有关javascript变量作用域的信息,但似乎很难实现我想要的目标。 感谢您的所有回复。

更新#2:根据对以下答案的评论,我确实使用$ .ajax而不是.getJSON,并实现了所需的结果。 代码如下:

var jsonIssues = {};
    $.ajax({
        url: "url",
        async: false,
        dataType: 'json',
        success: function(data) {
            jsonIssues = data.Issues;
        }
    });

    // jsonIssues accessible here -- good!!

将后续评论添加到我的回答中(我非常感谢)。 我这样做的目的是首先用一个Issues列表加载JSON对象,然后用户可以从中删除并保存。 但这是通过页面上的后续交互完成的,而且我无法预见用户将要对回调中的JSON对象执行的操作。 因此,需要在回调完成后使其可访问。 有人在这里看到我的逻辑缺陷吗? 严重的是,因为可能有些东西我没看到...

另外,我阅读了.ajax()jQuery文档,并说将async设置为false“将同步加载数据。在请求处于活动状态时阻止浏览器。最好在需要同步时通过其他方式阻止用户交互 ”。

有谁知道在这种情况下我应该如何阻止用户交互? 为什么这么担心? 再次感谢您的所有答复。

trans by 2020-08-06T06:11:44Z

java-为什么Try / Catch块会创建新的变量作用域?

例如:

try
{
    SomeObject someObject = new SomeObject();
    someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //can't access someObject!

但是您可以在try/catch块之前声明它,然后它可以正常工作:

SomeObject someObject;
try
{
    someObject = new SomeObject();
    someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //works fine

我只是想知道这样做的原因。 为什么在try/catch块中创建的对象不在该方法的其余部分范围内? 也许我不了解try/catch的工作原理,而只是看着Exceptions

trans by 2020-08-02T05:55:25Z

C ++-在名称中使用声明的范围

在C ++头文件中使用命名空间中的using声明是否安全(且正确),如下所示:

#include <boost/numeric/ublas/vector.hpp>
namespace MyNamespace {
    using boost::numeric::ublas::vector;
    vector MyFunc(vector in);
}

即 是在MyNamespace块中正确包含“使用boost :: numeric :: ublas :: vector”,还是会污染任何包含此标头的文件的名称空间?

trans by 2020-08-01T18:38:44Z

javascript-Angularjs监视父范围的更改

我正在写指令,并且需要注意父作用域的更改。 不知道我是否正在按照首选方式执行此操作,但是它不能与以下代码一起使用:

  scope.$watch(scope.$parent.data.overlaytype,function() {
    console.log("Change Detected...");
  })

它记录了窗口加载,但是即使更改了overlaytype,也不会再次登录。

如何查看overlaytype的变化?

编辑:这是整个指令。 不确定我为什么要使用儿童镜

/* Center overlays vertically directive */
aw.directive('center',function($window){
  return {
    restrict : "A",
    link : function(scope,elem,attrs){

      var resize = function() {
        var winHeight = $window.innerHeight - 90,
            overlayHeight = elem[0].offsetHeight,
            diff = (winHeight - overlayHeight) / 2;
            elem.css('top',diff+"px");
      };

      var watchForChange = function() {
        return scope.$parent.data.overlaytype;
      }
      scope.$watch(watchForChange,function() {
        $window.setTimeout(function() {
          resize();
        }, 1);
      })

      angular.element($window).bind('resize',function(e){
        console.log(scope.$parent.data.overlaytype)
        resize();
      });
    }
  };
});
trans by 2020-07-29T22:09:51Z

C ++-未初始化向量<int>的值

从这个问题的答案中我了解到,未初始化的int全局/静态值将为0。这个答案表明,对于向量,将调用对象类型的默认构造函数。

我无法弄清楚-在本地函数中有vector<int> v(10)时会发生什么。 int的默认构造函数是什么? 如果我在全球范围内声明了vector<int> v(10),该怎么办?

我看到的是,本地函数中的vector<int> v(10)导致变量为0-但我不确定这是仅由于我的编译器还是固定的预期行为。

trans by 2020-07-26T22:38:19Z

sql-Rails作用域为IS NOT NULL并且不为空/空白吗?

我的范围如下:

scope :comments, :conditions => ['text_value IS NOT NULL']

但我也希望条件说“或text_value不为空”(或类似的意思)。

我不想选择text_value为空/空白的任何行。

trans by 2020-07-26T00:49:20Z

范围-哪些设计模式可以利用JavaScript的起吊行为?

Ben Cherry的出色文章充分说明了JavaScript的提升。 但是,我的问题是我无法为这个臭名昭著的混淆者构想一个用例。 请说明是否存在实际上利用此语言功能的设计模式。

其次,作用域提升是JavaScript所独有的吗?

更新---我为满足我好奇心的答案添加了赏金:哪些设计模式实际上利用了JavaScript的提升行为? 我了解JavaScript为什么支持吊装,但是我想知道如何利用此功能。

trans by 2020-07-25T14:55:00Z

为什么在lambdas中隐式捕获const int(或短裤)?

这个问题已经在这里有了答案:

  • 为什么有时不需要在lambda中捕获const变量? 3个答案

这样编译:

int main() {
    const int x = 123;
    auto g = []() { std::cout << x << "\n"; };
    g();
}

但是这个:

int main(){
    const float x = 123;
    auto g = []() { std::cout << x << "\n"; };
    g();
}

产生:

“错误:未捕获'x'”

为什么?

我已经在GCC(版本从5.0.0到8.0.0)和Clang(版本从4.0.0到6.0.0)上进行了测试。 在所有情况下其行为都相同。

trans by 2020-07-22T00:14:18Z

范围-R和

在最近与同学的对话中,我一直提倡避免除存储常量之外的全局变量。 这是一种典型的应用统计类型程序,每个人都编写自己的代码,而项目规模又很小,因此人们很难看到由草率习惯引起的麻烦。

在谈论避免使用全局变量时,我主要关注以下原因,为什么全局变量可能会引起麻烦,但我想在R和/或Stata中使用一些示例来配合这些原则(以及您可能会发现很重要的任何其他原则) ),我很难提出可信的建议。

  • 非本地性:全局变量使调试更加困难,因为他们使对代码流的理解更加困难
  • 隐式耦合:全局变量通过允许远程代码段之间的复杂交互来打破函数编程的简单性
  • 命名空间冲突:通用名称(x,i等)被重用,从而导致命名空间冲突

这个问题的一个有用答案是可重现且自成体系的代码段,其中全局变量引起特定类型的故障,理想情况下,使用另一个代码段来解决问题。 如果需要,我可以生成更正的解决方案,因此问题的示例更为重要。

相关链接:

全局变量不正确

全局变量不好吗?

trans by 2020-07-20T20:50:52Z

为什么我们不能在if语句中定义变量?

也许这个问题已经被回答过了,但是这个单词while经常出现,很难找到它。

该示例没有意义(该表达式始终为真),但它说明了我的问题。

为什么此代码有效:

StringBuilder sb;
if ((sb = new StringBuilder("test")) != null) {
    Console.WriteLine(sb);
}

但是这段代码不是:

if ((StringBuilder sb = new StringBuilder("test")) != null) {
    Console.WriteLine(sb);
}

我发现了关于while语句的类似问题。 那里接受的答案说,在while语句中,这意味着将在每个循环中定义变量。 但是对于我的if语句示例,情况并非如此。

那么,为什么我们不允许这样做呢?

trans by 2020-07-19T07:22:52Z

jQuery-如何在JavaScript中强制加法而不是串联

这个问题已经在这里有了答案:

  • 如何强迫JS进行数学运算,而不是将两个字符串放在一起 9个答案

我正在尝试像这样在我的JavaScript中添加所有卡路里含量:

$(function() {
    var data = [];

    $( "#draggable1" ).draggable();
    $( "#draggable2" ).draggable();
    $( "#draggable3" ).draggable();

    $("#droppable_box").droppable({
        drop: function(event, ui) {
            var currentId = $(ui.draggable).attr('id');
            var total = 0;
            data.push($(ui.draggable).attr('id'));

            if(currentId == "draggable1"){
            var myInt1 = parseFloat($('#MealplanCalsPerServing1').val());
            }
            if(currentId == "draggable2"){
            var myInt2 = parseFloat($('#MealplanCalsPerServing2').val());
            }
            if(currentId == "draggable3"){
            var myInt3 = parseFloat($('#MealplanCalsPerServing3').val());
            }
        if ( typeof myInt1 === 'undefined' || !myInt1 ) {
        myInt1 = parseInt(0);
        }
        if ( typeof myInt2 === 'undefined' || !myInt2){
        myInt2 = parseInt(0);
        }
        if ( typeof myInt3 === 'undefined' || !myInt3){
        myInt3 = parseInt(0);
        }
        total = parseFloat(myInt1 + myInt2 + myInt3);
        $('#response').append(total);
        }
    });
    $('#myId').click(function(event) {
        $.post("process.php", ({ id: data }), function(return_data, status) {
            alert(data);
            //alert(total);
        });
    });
});

而不是添加变量,而是将它们串联在一起。 我已经尝试使用parseInt,parseFloat和Number,但是我仍然只是串联而没有加法。 请在[http://maureenmoore.com/momp_112412/121912_800.html]中查看视图源。

trans by 2020-07-18T19:54:37Z

file io-为什么将具有自定义文件句柄的三参数打开调用作为Perl最佳实践?

关于Perl strict函数,我有两个问题:

1)我似乎从Perl Best Practices记住,3参数版本的strict比2参数版本更好,例如

open(OUT, '>>', $file);

open(OUT, ">>$file");

这是为什么? 我试图告诉某人前一天使用3参数版本,但似乎什么也没有备份。

2)我似乎还记得自动存档的文件句柄比裸字文件句柄受青睐(它们称为不同的东西)? 而且也不记得为什么,例如

open(my $out, '>>', $file);

open(OUT, '>>', $file);

strict的东西吗? 我似乎记得能够将OUTstrict一起使用,但我不记得了。

trans by 2020-07-06T01:48:14Z

作用域-在C ++中初始化之前声明一个对象

是否可以在c ++中声明变量而不实例化? 我想做这样的事情:

Animal a;
if( happyDay() ) 
    a( "puppies" ); //constructor call
else
    a( "toads" );

基本上,我只想声明条件的外部,以便获得正确的范围。

有什么方法可以在不使用指针的情况下,并在堆上分配a来做到这一点? 也许有些聪明的参考资料?

trans by 2020-07-05T15:02:25Z

angularjs-Angular JS可调整大小的div Directi

我的网站将有多个部分,每个部分我都打算重新调整大小。 为此,我制定了“可调整大小”的指令,例如:

<div class="workspace" resize="full" ng-style="resizeStyle()">
<div class="leftcol" resize="left" ng-style="resizeStyle()">

使用类似如下的指令:

lwpApp.directive('resize', function ($window) {
    return {
        scope: {},

        link: function (scope, element, attrs) {
            scope.getWinDim = function () {
                return {
                    'height': window.height(),
                    'width': window.width()
                };
            };

            // Get window dimensions when they change and return new element dimensions
            // based on attribute
            scope.$watch(scope.getWinDim, function (newValue, oldValue) {
                scope.resizeStyle = function () {
                    switch (attrs.resize) {
                    case 'full':
                        return {
                            'height': newValue.height,
                            'width': (newValue.width - dashboardwidth)
                        };

                    case 'left':
                        return {
                            'height': newValue.height,
                            'width': (newValue.width - dashboardwidth - rightcolwidth)
                        };

                    etc...
                };
            }, true);

            //apply size change on window resize
            window.bind('resize', function () {
                scope.$apply(scope.resizeStyle);
            });
        }
    };
});

如您所见,这只会在窗口调整大小时调整每个div的大小,并且每个指令都有一个隔离范围。 这对于它的构建工作正常,但最终我想通过可拖动的栏使div的子集可调整大小。 例如

div1     div2
----------------
|     ||       |
|     ||       |
|     ||       |
|     ||       |
----------------
    draggable bar in middle

在可拖动栏的移动(沿水平方向)上,我大概需要通过父控制器(?)的作用域来访问div1,div2的宽度。 我的问题是:

  1. 这是使角度可调整div的“正确”方法吗? 特别是一个div的大小何时影响另一个?

  2. 我个人认为(1)的答案是“不,我没有正确执行,因为当每个指令都有隔离范围时,我无法在它们之间进行通信。” 如果是这样,我该如何考虑div之间的窗口大小和可拖动大小调整?

trans by 2020-07-03T15:55:28Z

javascript-AngularJS:如何将参数/函数传递给指令?

看看这个小提琴,我需要更改什么,使用我在HTML中定义的参数对模板中的表达式求值? 因为我通过了SAVE按钮,所以它应该调用控制器的blabla()功能。

var myApp = angular.module('MyApp',[])
myApp.directive('editkeyvalue', function() {
    return {
        restrict: 'E',
        replace: true,
        scope: {
            accept: "expression"
        },
        template : '<div><label class="control-label">{{key}}</label>' +
        '<label class="control-label">{{key}}</label>' +
          '<input type="text" ng-model="value" />'+
        '<button type="button" x-ng-click="cancel()">CANCEL</button>' +
        '<button type="submit" x-ng-click="save()">SAVE</button></div>',

      controller: function($scope, $element, $attrs, $location) {
        $scope.save= function() {
          $scope.accept();
        };
      }
    }
});

我真的看不出来。 感谢帮助!

trans by 2020-06-25T22:34:00Z

Scala类的构造函数参数

之间有什么区别:

class Person(name: String, age: Int) {
  def say = "My name is " + name + ", age " + age
}

class Person(val name: String, val age: Int) { 
  def say = "My name is " + name + ", age " + age
}

我可以将参数声明为vars,以后再更改其值吗? 例如,

class Person(var name: String, var age: Int) {

  age = happyBirthday(5)

  def happyBirthday(n: Int) {
    println("happy " + n + " birthday")
    n
  }
}
trans by 2020-06-25T07:20:17Z

python-Tensorflow:如何通过名称获取张量?

我无法按名称恢复张量,我什至不知道是否可能。

我有一个创建图的函数:

def create_structure(tf, x, input_size,dropout):    
 with tf.variable_scope("scale_1") as scope:
  W_S1_conv1 = deep_dive.weight_variable_scaling([7,7,3,64], name='W_S1_conv1')
  b_S1_conv1 = deep_dive.bias_variable([64])
  S1_conv1 = tf.nn.relu(deep_dive.conv2d(x_image, W_S1_conv1,strides=[1, 2, 2, 1], padding='SAME') + b_S1_conv1, name="Scale1_first_relu")
.
.
.
return S3_conv1,regularizer

我想在此函数之外访问变量S1_conv1。 我试过了:

with tf.variable_scope('scale_1') as scope_conv: 
 tf.get_variable_scope().reuse_variables()
 ft=tf.get_variable('Scale1_first_relu')

但这给了我一个错误:

ValueError:共享不足:不允许使用变量scale_1 / Scale1_first_relu。 您是说要在VarScope中设置“ reuse = None”?

但这有效:

with tf.variable_scope('scale_1') as scope_conv: 
 tf.get_variable_scope().reuse_variables()
 ft=tf.get_variable('W_S1_conv1')

我可以解决这个问题

return S3_conv1,regularizer, S1_conv1

但是我不想那样做。

我认为我的问题是S1_conv1并不是一个真正的变量,它只是一个张量。 有什么方法可以做我想要的吗?

trans by 2020-06-18T16:04:34Z

修改** kwargs字典是否总是安全?

使用Python函数语法kwargs['somelist'].append(3),在函数中创建了关键字参数字典kwargs,并且字典是可变的,所以问题是,如果我修改kwargs字典,是否有可能在函数范围之外产生某些影响?

从我对字典解压缩和关键字参数打包的工作原理的理解中,我看不出有什么理由相信它可能是不安全的,而且在我看来,Python 3.6中没有这种危险:

def f(**kwargs):
    kwargs['demo'] = 9

if __name__ == '__main__':
    demo = 4
    f(demo=demo)
    print(demo)     # 4

    kwargs = {}
    f(**kwargs)
    print(kwargs)   # {}

    kwargs['demo'] = 4
    f(**kwargs)
    print(kwargs)    # {'demo': 4}

但是,这是特定于实现的,还是Python规范的一部分? 我是否会忽略任何情况或实现(除非对本身可变的参数进行修改(例如2926930423819219273216))会出现问题?

trans by 2020-06-17T12:19:22Z

python类中的变量范围

在类中声明变量(在函数外部):所有类函数都可以访问它(基本上是公共变量)

在类内的函数内声明变量:只有该函数才能访问它(在该函数范围内)

在类内的函数内部声明带有self。(变量名)的变量:所有类函数都可以访问它(这与全局变量名有何不同?)

并且由于没有私有/受保护的事物,所以所有事物都是公共的,因此可以从类内部访问所有可以从类内部访问的事物。

我还有其他细微差别应该知道吗?

trans by 2020-02-21T23:30:04Z

1 2 3 4 5 6 7 下一页 共7页