小编das*_*ght的帖子

在for-in循环中使用尾随闭包

我正在使用map()for-in循环中的数组函数,如下所示:

let numbers = [2, 4, 6, 8, 10]

for doubled in numbers.map { $0 * 2 } // compile error
{
    print(doubled)
}
Run Code Online (Sandbox Code Playgroud)

这会产生编译错误:

使用未解析的标识符'doubled'

但是,如果我将括号用于map()函数,它可以正常工作.即

for doubled in numbers.map ({ $0 * 2 })
{
    print(doubled)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么编译器不会区分尾随函数和循环的代码块,假设这会导致问题?

swift swift2

10
推荐指数
2
解决办法
1104
查看次数

数组中的Java数组字符串和字符串差异

在编写一些数组时,我注意到了这一点

char[] javaArray = {'j','a','v','a'};
Run Code Online (Sandbox Code Playgroud)

打印出来

java
Run Code Online (Sandbox Code Playgroud)

String[] javaStringArray = {"j","a","v","a"};
Run Code Online (Sandbox Code Playgroud)

仅打印堆栈位置.我知道char和String都是非常不同的,但是为什么JVM知道为第一个输出字符而第二个只有一个堆栈位置?

我正在使用IntelliJ和命令 System.out.println(javaArray);

java arrays string char

10
推荐指数
1
解决办法
304
查看次数

Swift和方法原型 - 前向声明

探索Swift标题我看到Apple使用的这种模式,特别是以下结构的init声明没有实现.显然init()实现是以某种方式隐藏的,因为它是Apple的东西,但我试图理解如何.这只是一个示例,但它似乎是标题中的常见行为

struct AutoreleasingUnsafePointer<T> : Equatable, LogicValue {
    let value: Builtin.RawPointer
    init(_ value: Builtin.RawPointer)    // <---- how is it possible? where is the implementation?
    func getLogicValue() -> Bool

    /// Access the underlying raw memory, getting and
    /// setting values.
    var memory: T

}
Run Code Online (Sandbox Code Playgroud)

我知道可以声明一个协议加上一个类扩展,这样就可以从类声明中"隐藏"实现并将其移动到别处

class TestClass :TestClassProtocol
{
     // nothing here

}

protocol TestClassProtocol
{
    func someMethod()  // here is the method declaration

}

extension TestClass
{
    func someMethod()  // here is the method implementation
    {
        println("extended method")
    }

}
Run Code Online (Sandbox Code Playgroud)

但它与我在Apple …

ios swift

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

创建基类对象时的运行时多态性

请考虑以下代码.

class Base{
  Base() {  
      print();   
  }
  void print() { 
      System.out.println("Base"); 
  }
}

class Child extends Base{
   int i =   4;
   public static void main(String[] args){
      Base base = new Child();
      base.print();
   }
   void print() { 
       System.out.println(i); 
   }
}
Run Code Online (Sandbox Code Playgroud)

该程序将打印0,4.

我理解的是,将根据实际对象的类来选择要执行的方法,因此在这种情况下是Child.因此,当Base调用构造函数时,调用print方法,Child这样就会打印0,4.

请告诉我是否理解正确吗?如果是,我还有一个问题,而基类构造函数正在运行JVM如何调用Child方法,因为Child没有创建对象?

java

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

为什么在变量中存储值会改变相等比较的结果?

输出以下代码:

var a = 0.1;
var count = 1;

while (a > 0)
{
    if (count == 323)
    {
        var isZeroA = (a * 0.1) == 0;
        var b = a * 0.1;
        var isZeroB = b == 0;

        Console.WriteLine("IsZeroA: {0}, IsZeroB: {1}", isZeroA, isZeroB);
    }

    a *= 0.1;
    ++count;
}
Run Code Online (Sandbox Code Playgroud)


IsZeroA:错,IsZeroB:是的

奇怪的是,当我if (count == 323)在调试并(a * 0.1) == 0在Visual Studio Watch窗口中放置表达式之后放置断点时,它会报告表达式true.

有谁知道为什么表达式a * 0.1不为零,但是当分配给变量时b,则b为零?

.net c# clr

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

使用前置条件测试Swift代码

你如何为具有前提条件的Swift方法编写测试?这是一个例子:

func doublePositive(n:Int) -> Int {
    precondition(n >= 0)
    return 2*n
}
Run Code Online (Sandbox Code Playgroud)

使用XCTAssertThrowsError不起作用:

func testDoublePositive() {
    XCTAssertEqual(10, testObject.doublePositive(5))    // Works
    XCTAssertThrowsError(testObject.doublePositive(-1)) // Breaks 
}
Run Code Online (Sandbox Code Playgroud)

这在运行测试时会生成错误:

线程1:EXEC_BAD_INSTRUCTION(代码= EXCI386_INVOP,子代码= 0x0)

有没有办法测试Swift的前提条件?

preconditions xctest swift

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

带花括号和圆括号的块如何工作?

let loginRegisterButton:UIButton = {
    let button = UIButton(type: .system)
    button.backgroundColor = .white
    button.setTitle("Register", for: .normal)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.setTitleColor(.white, for: .normal)
    return button
}()
Run Code Online (Sandbox Code Playgroud)

是这个变量还是函数,它为什么会返回值?我们为什么称呼它?它不起作用parenthesis,为什么?

swift

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

为什么在使用LinkedBlockingQueue时使用ConcurrentLinkedQueue?

ConcurrentLinkedQueue什么时候才能使用LinkedBlockingQueue?我知道ConcurrentLinkedQueue是非阻塞但LinkedBlockingQueue可以作为ConcurrentLinkedQueue.我会使用put()/ offer()方法进行插入和 poll()删除方法.poll()如果队列为空,则方法不等待.LinkedBlockingQueue也是无限的.所以我可以用它.

我迄今发现的区别ConcurrentLinkedQueue 是在使用硬件级同步机制比较和交换LinkedBlockingQueue使用ReentrantLock.

java concurrency multithreading

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

同一站点仅通过蜂窝而不是通过 WiFi 产生“太多重定向”

我在外部主机提供商处托管了一个小型网站。当我从我的 iPhone 打开它时,根据我的 iPhone 连接到互联网的方式,我得到不同的结果:

  • 当通过 WiFi 建立连接时,我的页面总是按预期打开和运行
  • 当通过 Cellular 建立连接时,我的页面总是产生以下错误消息:

在移动 Safari 上:

Safari 无法打开页面,因为发生了过多的重定向。

在移动 Chrome 上:

此页面不工作/重定向您太​​多次。

在移动 Opera 上:

无法访问此站点/HTTP 重定向过多。

据我所知,决定结果的唯一区别是互联网连接类型 - WiFi 与蜂窝网络。我找不到任何其他差异。

由于该站点通过 WiFi 网络运行良好,因此我排除了我站点上的重定向循环(这是“重定向过多”错误最常提到的原因)。我也尝试关闭跨站点跟踪预防,但结果保持不变。我错过了什么吗?这种奇怪行为的原因可能是什么?

如果它是相关的,这里有一些关于网站本身的事情:

  • 网站是用 ASP.NET Core 开发的
  • 我在两种情况下都使用 https 访问站点(通过 WiFi 和通过蜂窝网络)
  • 站点位于子域中,该子域使用来自“顶级”域的通配符证书
  • 站点使用 ASP.NET Core“脚手架”身份验证,它使用重定向和 cookie,并具有“记住我”功能。

mobile mobile-safari ios mobile-chrome

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

我可以将两个UIColor混合在一起吗?

我有colorA [UIColor blueColor],和colorB,它是[UIColor redColor].这有可能让我呈现一个[UIColor purple]?如何实施?谢谢.

objective-c uicolor

8
推荐指数
2
解决办法
7357
查看次数