斯威夫特的后卫声明

时间:2019-09-05 03:12:10

标签: swift

我正在努力在Swift中使用保护声明

以下旨在防止力解开

allowed = ["pc", "FUJITSU", "LIFEBOOK", "win" "Windows",
            "PC", "Linux" "linux", "HP", "hp", "notebook", "desktop",
            "raspberry", "NEC", "mac", "Mac", "Core"]
denied = ["philips", "samsung"]
used = set()


source = requests.get("https://jmty.jp/aichi/sale-pcp").text
soup = BeautifulSoup(source, 'lxml')


def skype_login(user, password):
    sk = Skype(user, password)
    return(sk)


def send(sk, title, address, price, town, topic='Not'):
    for c in sk.chats.recent():
        chat = sk.chats[c]
        if hasattr(chat, 'topic') and chat.topic == topic:
            chat.sendMsg(f'Some string {title} \n {price} \n \n {town} \n \n URL: {address}' )
            break
    sleep(1)
    chat.sendMsg("Additional Message")


def jimoti(sk):
    global used
    for h2 in soup.find_all('div', class_='p-item-content-info'):
        title = h2.select_one('.p-item-title').text
        address = h2.select_one('.p-item-title').a["href"]
        price = (h2.select_one('.p-item-most-important').text).replace("円", "").replace("\n", "").replace(",", "")
        price = int(price)
        town = h2.select_one('.p-item-supplementary-info').text
        if price < 2000 and title not in used:
            used.add(title)
            for pattern in allowed:
                print(pattern)
                if re.search(pattern, title):
                    second(sk, title, address, price, town)
                    break

def second(sk, title, address, price, town):
    sk = sk
    title = title
    address = address
    price = price
    town = town
    # for prh in denied:   # Here it makes the problem
    #     print(prh)
    #     if re.search(prh, title):
    #         break
    #     else:
    send(sk, title, address, price, town)


if __name__ == '__main__':
    sk = skype_login('username', 'pass')
    while True:
        jimoti(sk)
        sleep(randint(11,20))

可以,但是我想做类似的事情

let pages = content.allpages?.pages?.compactMap{ $0.page?.html }
let titles = content.allpages?.pages?.compactMap{ $0.page?.title }

guard pages != nil && titles != nil else { let error = NSError(domain: "", code: -300, userInfo: [:]);
                observer.onError(error); return }
let both = Array(zip(pages!, titles!))

但是不能,关于在闭包中使用自治参数的一些错误吗?

为什么?

2 个答案:

答案 0 :(得分:4)

由于某些实现上的困难,guard语句中不允许尾随闭包语法。

这是我的写法:

guard let pages = content.allpages?.pages?.lazy.compactMap({ $0.page }) else {
    observer.onError(NSError(domain: "", code: -300, userInfo: [:]))
    return
}

let pageHTMLs = pages.compactMap { $0.html }
let pageTitles = pages.compactMap { $0.title }
let both = Array(zip(pages, titles))

答案 1 :(得分:0)

只需在每个方括号内添加每个闭合即可。 (另外,将let添加titles

guard let pages = content.allpages?.pages?.compactMap ({ $0.page?.html }), let titles = content.allpages?.pages?.compactMap ({ $0.page?.title }) else { return }