數控工具機解密

2021-10-05 02:38:20 字數 2749 閱讀 6404

_fn(1, 2, 3, 4, 5) // print: 1,2,3,4,5

_fn(1)(2)(3, 4, 5) // print: 1,2,3,4,5

_fn(1, 2)(3, 4)(5) // print: 1,2,3,4,5

_fn(1)(2)(3)(4)(5) // print: 1,2,3,4,5

複製**柯理化函式的實現

// 對求和函式做curry化

let f1 = curry(add, 1, 2, 3)

console.log(『複雜版』, f1()) // 6

// 對求和函式做curry化

let f2 = curry(add, 1, 2)

console.log(『複雜版』, f2(3)) // 6

// 對求和函式做curry化

let f3 = curry(add)

console.log(『複雜版』, f3(1, 2, 3)) // 6

// 複雜版curry函式可以多次呼叫,如下:

console.log(『複雜版』, f3(1)(2)(3)) // 6

console.log(『複雜版』, f3(1, 2)(3)) // 6

console.log(『複雜版』, f3(1)(2, 3)) // 6

checkbyregexp(/^1\dkatex parse error: undefined control sequence: \w at position 46: …eckbyregexp(/^(\̲w̲)+(\.\w+)*@(\w)…/, 『[email protected]』) // 校驗郵箱

複製**我們每次進行校驗的時候都需要輸入一串正則,再校驗同一型別的資料時,相同的正則我們需要寫多次, 這就導致我們在使用的時候效率低下,並且由於 checkbyregexp 函式本身是乙個工具函式並沒有任何意義。此時,我們可以借助柯里化對 checkbyregexp 函式進行封裝,以簡化**書寫,提高**可讀性。

//進行柯里化

let _check = curry(checkbyregexp)

//生成工具函式,驗證**號碼

let checkcellphone = _check(/^1\dkatex parse error: undefined control sequence: \w at position 45: …il = _check(/^(\̲w̲)+(\.\w+)*@(\w)…/)

checkcellphone(『18642838455』) // 校驗**號碼

checkcellphone(『13109840560』) // 校驗**號碼

checkcellphone(『13204061212』) // 校驗**號碼

複製**柯里化函式引數 length

函式 currying 的實現中,使用了 fn.length 來表示函式引數的個數,那 fn.length 表示函式的所有引數個數嗎?並不是。

函式的 length 屬性獲取的是形參的個數,但是形參的數量不包括剩餘引數個數,而且僅包括第乙個具有預設值之前的引數個數,看下面的例子。

((a, b, c) => {}).length

// 3

((a, b, c = 3) => {}).length

// 2

((a, b = 2, c) => {}).length

// 1

((a = 1, b, c) => {}).length

// 0

((…args) => {}).length

// 0

const fn = (…args) =>

fn(1, 2, 3)

// 3

複製**compose 函式

compose 就是組合函式,將子函式串聯起來執行,乙個函式的輸出結果是另乙個函式的輸入引數,一旦第乙個函式開始執行,會像多公尺諾骨牌一樣推導執行後續函式。

const greeting = name =>hello $

const toupper = str => str.touppercase()

toupper(greeting(『onion』)) // hello onion

複製**compose 函式的特點

compose 接受函式作為引數,從右向左執行,返回型別函式

fn()全部引數傳給最右邊的函式,得到結果後傳給倒數第二個,依次傳遞

compose 的實現

var compose = function(…args) else }}

複製**舉個例子

var greeting = (name) =>hello $

var toupper = str => str.touppercase()

var fn = compose(toupper, greeting)

console.log(fn(『jack』))

複製**大家熟悉的數控工具機解密 裡面的 loader 執行順序是從右到左,是因為webpack 選擇的是 compose 方式,從右到左依次執行 loader,每個 loader 是乙個函式。

rules: [

]複製**如上,webpack 使用了 style-loader 和 css-loader,它是先用 css-loader 載入.css 檔案,然後 style-loader 將內部樣式注入到我們的 html 頁面。

webpack 裡面的 compose **如下:

const compose = (…fns) => ,

value => value)}

數控工具機解密

webpack 的 loader 本質上其實就是乙個函式,數控工具機解密我們可以在這個函式內部,根據正則匹配出我們想刪除的字串,對其進行替換。自定義 loaders ignore console log loader.js 很簡單,如下 const reg console.log gmodule.e...

數控工具機基礎教學

一 數控工具機的座標系 關於數控工具機的座標軸和運動方向,iso組織對作了統一的規定,並制訂了iso841標準 這與我國有關部門制定的相應標準jb3051 82相當。一 座標軸及運動方向的規定 1.工具機上乙個直線進給運動或乙個圓周進給運動定義乙個座標,其中直線進給運動座標軸為x y z軸,稱為基本...

2020數控工具機資料採集

在國家大力推進工業物聯網的大背景下,國內從事數控工具機資料採集工作的公司不少。本人在這個行業摸爬滾打也有些年了,目前就自己做的數控工具機資料採集做個簡單總結。一 fanuc網絡卡的 目前focas在網路上都可以找到資源,不做過多說明 二 西門子840d 這款數控系統看似簡單,裡面的坑實在是多。單西門...