小编Phi*_*lip的帖子

如何在Linux上为MATLAB选择硬件OpenGL渲染

当我在我的linux机器上启动matlab时,我收到通知,"MATLAB正在选择SOFTWARE OPENGL渲染." 一旦启动,如果我尝试,opengl hardware我得到的消息是我无法在运行时切换.如何尽可能简单地启用硬件渲染?

matlab

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

将静态C库与Swift软件包管理器一起使用

我想使用Swift包管理器在我的构建中包含一个静态 C库。Apple的文档显示了使用共享库的过程,但我希望有一种使用静态方法。我能够使用链接到静态库swiftc,因此希望能够使用来实现静态链接似乎是合理的swift build

我有一个小示例问题,它使用一个静态C库,其中包含一个将两个数字相乘的函数。(注意:我在Linux上运行Swift 3 Preview 1)

目录结构如下所示:

example/
    Package.swift
    main.swift
    .git/

CMult/
    Package.swift
    module.modulemap
    mult.h
    libmult.a
    .git/
Run Code Online (Sandbox Code Playgroud)

example / Package.swift的内容:

import PackageDescription

let package = Package(
    name: "example",
    dependencies: [
        .Package(url: "../CMult", majorVersion: 1)
    ]
)
Run Code Online (Sandbox Code Playgroud)

example / main.swift的内容:

import CMult

let n: Int32 = mult2(3, 5) // "int mult2(int,int)" is in mult.h and libmult.a
print("Result = \(n)")
Run Code Online (Sandbox Code Playgroud)

CMult / Package.swift的内容:

import PackageDescription

let package = Package(
    name: "CMult"
)
Run Code Online (Sandbox Code Playgroud)

CMult / …

swift swift-package-manager

7
推荐指数
1
解决办法
1674
查看次数

使用swift读入文本文件

Swift 的新手,但用其他语言(Java、C、Python ......)完成了大量编码,我对简单地读取文件看起来有多么困难感到沮丧。

我已经阅读了许多帖子,例如这个帖子,但无法让他们的建议发挥作用。还可以阅读这篇文章这一个,但解决方案似乎长了这样一个简单的任务,也没有为我工作。

这是一个简单的版本:

    import Foundation
    let path = "./data.txt"        
    let fileContents = String(contentsOfFile: path, encoding: NSUTF8StringEncoding)        
    print(fileContents) // prints out: ("./data.txt", 4)
    let lines : [String] = fileContents.componentsSeparatedByString("\n") // error: value of type 'String' has no member 'componentsSeparatedByString'       
Run Code Online (Sandbox Code Playgroud)

现在,根据我上面链接的第一篇文章,我希望这会将指定的文件读入一个字符串,然后在换行符上拆分字符串,并给我一个数组,每行作为一个元素。相反,当我打印 fileContents 时,我得到的是某种类型的元组而不是我期望的字符串。当我尝试拆分字符串时,显然该函数不存在。

有人可以解释我遗漏了什么并向我展示了一种将文件中的行读入字符串数组的简短方法吗?我正在阅读文档,但甚至找不到第 3 行中 String() 调用的解释或第 5 行中对 componentsSeparatedByString() 的引用,所以我完全不考虑第一篇文章中的建议;任何指针都非常感谢。

arrays string file swift

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

打开Any.Type

我正试图在swift中打开一个类型.我不是试图打开对象实例的类型,我试图打开实际类型本身.例如:

 let t: Any.Type = Int.self
 switch t {
 case is Int:
     print("int")
 default:
     print("other")
 }
Run Code Online (Sandbox Code Playgroud)

我希望这打印"int"但它属于默认情况.

我可以使用if语句完成所需的结果,如,

 if t == Int.self
 {
     print("t is an int")
 }
Run Code Online (Sandbox Code Playgroud)

但是我希望通过开关来实现这一目标.我读过Apple的'Type Casting'文档,可能还不够彻底,因为我看不到在这里应用它的方法.

swift

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

Swift:将对象数组转换为子类型数组

假设我有一系列动物,我想将其投放到一系列猫中。在这里,动物是猫采用的协议。我想要类似的东西,let cats: [Cat] = animals as! [Cat]但是此段错误在编译中出现(顺便说一句,我同时在Linux Swift 3和Mac Swift 2.2上)。我的解决方法是创建一个函数,将每个项目单独下调并将其添加到新数组中(请参见下面的小示例)。它可以产生所需的结果,但不如我所希望的那样干净。

我的问题是:

  1. 这完全是愚蠢的,我只是想念一个更简单的方法吗?

  2. 如何在下面的函数中将类型作为目标参数传递,而不是传递实例?(例如,我想传递Cat.self而不是Cat(id:0),但这样做会导致错误,提示无法将Cat.Type转换为预期的参数类型Cat)

这是我到目前为止的内容:

protocol Animal: CustomStringConvertible 
{
    var species: String {get set}
    var id: Int {get set}
}

extension Animal
{
    var description: String 
    {
        return "\(self.species):\(self.id)"
    }
}

class Cat: Animal 
{
    var species = "felis catus"
    var id: Int

    init(id: Int)
    {
        self.id = id
    }
}

func convertArray<T, U>(_ array: [T], _ target: U) -> [U]
{
    var newArray = [U]()
    for element …
Run Code Online (Sandbox Code Playgroud)

swift

4
推荐指数
2
解决办法
2352
查看次数

快速构建的替代方案--clean?

所以它曾经是命令行,swift build --clean通过删除.build目录来清理构建.你也可以通过--clean=dist去除包裹.

我刚刚升级到Swift 4,这些显然已经消失了.是否已将其转换为子命令或其他内容?谁能指点我这方面的一些文件?我找不到他们......

实际上,我根本找不到子命令的文档.我知道swift runswift package进行了介绍.有谁知道这些命令和其他命令的完整文档在哪里?我发现在不同的地方描述了点点滴滴,但没有找到完整的文档(希望存在于某个地方)

swift swift-package-manager

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

标签 统计

swift ×5

swift-package-manager ×2

arrays ×1

file ×1

matlab ×1

string ×1