什么是Scheme?原來還可以這樣應用!-創新互聯

Scheme定義

創新互聯是一家專業提供晉安企業網站建設,專注與成都網站設計、網站建設、外貿網站建設HTML5、小程序制作等業務。10年已為晉安眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。

Scheme 編程語言是一種Lisp方言,誕生于1975年,由 MIT 的 Gerald J. Sussman 和 Guy L. Steele Jr. 完成。它是現代兩大Lisp方言之一;另一個方言是Common Lisp。

Scheme遵循極簡主義哲學,以一個小型語言核心作為標準,加上各種強力語言工具(語法糖)來擴展語言本身。

MIT曾用Scheme作為計算機系入門課程的編程語言。計算機程序語言界著名的魔法書《計算機程序的構造和解釋》(又稱SICP)正是利用Scheme來解釋程序設計。

歷史悠久的Scheme依然活躍,擁有針對各種計算機平臺和環境的實現,例如Racket、Guile、MIT Scheme、Chez Scheme等。Guile是GNU工具體系里最重要的部件之一,被許多自由軟件和開源軟件作為內置腳本語言使用。

歷史與特點:
Lisp 語言歷史悠久,在計算機程序語言里,年齡僅次于Fortran。二十世紀五十年代,計算機科學家先是發明了針對數字計算的 Fortran 語言,后來針對符號計算,由MIT 的John McCarthy于1960年開發出了Lisp (list processing)語言。該語言起初為表處理而設計,后來廣泛用于人工智能。Lisp 程序中充滿了一對對嵌套的小括號,這些嵌套的符號表達式體現了遞歸。1994年時眾多Lisp版本得到了相當的統一,統一之后的版本稱為Common LISP。Common Lisp帶有龐大的函數庫,語言的規范長達千頁以上,包括面向對象的 CLOS。

Scheme語言的規范很短,總共只有50頁,甚至連Common Lisp 規范的索引的長度都不到,但是卻被稱為是現代編程語言王國的皇后。它與以前和以后的 Lisp 實現版本都存在一些差異。現特征如下:

(1)括號嵌套:Lisp 程序中充滿了一對對嵌套的小括號,這些嵌套的符號體現了最基本的數學思想——遞歸。

(2)語法簡潔:Scheme語言的規范很短,總共只有50頁。

(3)函數編程語言

一個函數(Function)是這個編程語言中所謂的第一等的公民。也就是說函式可以像一個 int 或者 float 一樣被很方便的傳遞來傳遞去。這也就是所謂“Functional編程語言”中,Functional 一詞的由來。

(4)自動內存管理

(5)支持尾遞歸:提高了遞歸效率

(6)continuation

(7)可移植性好

Scheme開發的程序有很好的可移植性,這是由于Scheme在不同的計算機平臺有相應的解釋器和編譯器。

(8)腳本語言

由于scheme語法簡潔,一個Scheme解釋器可以非常的小巧。Scheme可以作為腳本語言而內嵌于一些工具之中。

(9)數據結構

I.數字

下面都是合法的數字表示方法:47,1/3,2.3,4.3e14,1+3i。

II.字符

字符前面需要用#\做前綴。如下面都是合法字符:#\a #\A #\b #\B #\space #\newline

III.字符串:由雙引號括起來的字符組成字符串。如:"A little string"

IV布爾值:布爾值True和False分別用 #t 和 #f 表示。

V.列表:用圓括號括起來的,可以包含任何數據類型的稱為列表。如:(a little (list of) (lists))

VI.數組(vector):用#為前綴,如:#(1 2 "string" #\x 5)

VII.函數(或稱為過程):把函數作為一種數據類型,是包括Scheme語言在內的Lisp的特色。

VIII.符號

符號除了不能夠以數字開頭的任何字符可組成符號。如:Symbols: this-is-a-symbol foo a32 c$23*4&7+3-is-a-symbol-too!

IX.注釋 分號開始一行注釋。 如:(+ 3 1) ;return 4

Scheme應用實例
今天小編給大家講解的這個例子是關于shareinstall的。我們知道,Shareinstall其實是一個APP的推廣輔助工具,它主要的作用就是進行渠道統計。另外,它還提供了免填二維碼、一鍵跳轉、自動渠道打包、自動建立社區關系等功能。而scheme語言主要應用在一鍵跳轉功能上。

以IOS SDK為例,ShareInstall通過標準的scheme、universal link等技術,在app安裝的情況下,從各種瀏覽器(微信、QQ、新浪微博、釘釘等主流社交軟件的內置瀏覽器)喚醒 app 并傳遞自定義參數,避免重復安裝。

我們可以從universal link配置作為載體,去觀察scheme的活躍性。如下:

Universal link是iOS9的一個新特性,通過Universal link,App可以通過各種瀏覽器跳轉到App(例如微信內可不通過safari,一鍵跳轉到App),真正實現一鍵跳轉到相應界面。 備注:iOS9以上推薦使用Universal link。

(1)配置developer.apple.com的相關信息

到蘋果開發者中心,為當前的App ID開啟Associated Domains服務:

(2)配置Xcode

在Xcode中配置ShareInstall為當前應用生成的關聯域名:Associated Domains 開關打開,添加 Domains:applinks:f6bkarebhf22eb.shareinstall.com

在AppDelegate中的continueUserActivity方法中調用,用來處理Universal link。

//Universal Links 通用鏈接

  • (BOOL)application:(UIApplication )application continueUserActivity:(NSUserActivity)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler

{

//判斷是否通過ShareInstall Universal Links 喚起App

if ([ShareInstallSDK continueUserActivity:userActivity]) {

    return YES ;

}else{

    //其他代碼

    return YES;

}

}
(3)配置App的URL Scheme

iOS系統中App之間是相互隔離的,通過URL Scheme, App之間可以相互調用,并且可以傳遞參數。 備注:iOS9以下通過Url Scheme實現拉起。

(4) 在Xcode里選中Target—Info—URL Types, 配置shareInstall為當前應用生成的Url Scheme,如圖所示:

identifier 配置為 com.ShareInstall,URL Schemes從shareInstall獲取(dekf0466)。 注:identifier 一定要配置為com.ShareInstall

(5) URL Scheme相關代碼配置

注意:當需要在shareInstall這個方法中處理第三方回調的時候(比如支付寶、微信回調等),請注意區分。

//iOS9以下 URI Scheme

-(BOOL)application:(UIApplication )application openURL:(NSURL)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{

//判斷是否通過ShareInstall URL Scheme 喚起App

if ([ShareInstallSDK handLinkURL:url]) {

     return YES;

}else{

    //其他代碼

    return YES;

}

return YES;

}

//iOS9以上 URL Scheme

  • (BOOL)application:(UIApplication )app openURL:(NSURL)url options:(nonnull NSDictionary *)options

{

//判斷是否通過ShareInstall URL Scheme 喚起App

if ([ShareInstallSDK handLinkURL:url]) {

    return YES;

}else{

    //其他代碼

    return YES;

}

return YES;

}
(6)獲取喚醒參數,直達具體頁

通過在url中附帶具體的參數,喚醒app并跳轉到具體頁。

  • (void)getWakeUpParamsFromSmartInstall: (id) params withError: (NSError *) error{

NSLog(@"喚醒參數params=%@",params);

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL shceme 進來的" message:[self DataTOjsonString:params] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];

//彈出提示框(便于調試,調試完成后刪除此代碼)

[alert show];

}
(7) 其他代碼配置

如果做測試,獲取參數,則必須在Appdelegate.h加上如下測試代碼。

#pragma mark 將oc數據類型轉成NSString

-(NSString *)DataTOjsonString:(id)object

{

if (!object) {

    return null;

}

NSString *jsonString = null;

NSError *error;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object

                                                   options:NSJSONWritingPrettyPrinted

                                                     error:&error];

if (! jsonData) {

    NSLog(@"Got an error: %@", error);

} else {

jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

}

return jsonString;

}
一鍵跳轉的優勢
通過 URL Scheme 和 Universal Links 實現了在不同瀏覽器中拉起APP。這樣Shareinstall SDK就減少了應用的代碼冗余,提供了通用的一鍵拉起接口,使用戶有了更加舒適的體驗,同時給移動開發者對自己產品的管理和推廣,也提供了便利。

另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前名稱:什么是Scheme?原來還可以這樣應用!-創新互聯
當前網址:http://m.kartarina.com/article28/ccigjp.html

成都網站建設公司_創新互聯,為您提供ChatGPT面包屑導航小程序開發建站公司營銷型網站建設虛擬主機

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發
主站蜘蛛池模板: 中文字幕在线无码一区二区三区| 伊人蕉久中文字幕无码专区| 中文午夜乱理片无码| 亚洲国产成人精品无码久久久久久综合 | 99久久亚洲精品无码毛片| 高清无码午夜福利在线观看| 免费无码av片在线观看| 性虎精品无码AV导航| 亚洲大尺度无码无码专区| 亚洲AⅤ无码一区二区三区在线| 成人无码A区在线观看视频| 蜜色欲多人AV久久无码| 欧洲无码一区二区三区在线观看| 精品无码国产自产拍在线观看蜜 | 亚洲综合无码AV一区二区| 亚洲av永久无码精品秋霞电影秋| 亚洲欧洲无码AV电影在线观看| 无码视频免费一区二三区| 中文字幕亚洲精品无码| 日韩精品无码一区二区三区 | 无码人妻少妇久久中文字幕| 97精品人妻系列无码人妻| 国产精品无码成人午夜电影| 亚洲AV无码乱码在线观看牲色| 日日摸夜夜添无码AVA片| 人妻无码第一区二区三区 | 无码高潮爽到爆的喷水视频app | 人妻无码一区二区三区免费| 精品久久久久久无码人妻热| 国产精品无码2021在线观看| 亚洲人成网亚洲欧洲无码| 欧洲成人午夜精品无码区久久| 亚洲av永久无码精品漫画| 一本加勒比hezyo无码专区| 精品无人区无码乱码毛片国产| 国产精品无码久久av不卡| 无码人妻精品一区二| 国产精品成人无码久久久久久 | 亚洲精品无码久久不卡| 人妻系列无码专区久久五月天| 毛片亚洲AV无码精品国产午夜|