1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-15 02:02:27 +08:00
Files
lancet/docs/.vitepress/dist/assets/en_api_packages_function.md.0aff7e60.js
2023-08-30 15:08:27 +08:00

448 lines
96 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as l,o as p,c as o,k as s,a,X as n}from"./chunks/framework.6e839c56.js";const q=JSON.parse('{"title":"Function","description":"","frontmatter":{},"headers":[],"relativePath":"en/api/packages/function.md","filePath":"en/api/packages/function.md"}'),e={name:"en/api/packages/function.md"},t=s("h1",{id:"Function",tabindex:"-1"},[a("Function "),s("a",{class:"header-anchor",href:"#Function","aria-label":'Permalink to "Function"'},"")],-1),c=s("p",null,"Package function can control the flow of function execution and support part of functional programming.",-1),r=s("div",{STYLE:"page-break-after: always;"},null,-1),y=s("h2",{id:"Source-",tabindex:"-1"},[a("Source: "),s("a",{class:"header-anchor",href:"#Source-","aria-label":'Permalink to "Source:"'},"")],-1),F=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/duke-git/lancet/blob/main/function/function.go",target:"_blank",rel:"noreferrer"},"https://github.com/duke-git/lancet/blob/main/function/function.go")]),s("li",null,[s("a",{href:"https://github.com/duke-git/lancet/blob/main/function/watcher.go",target:"_blank",rel:"noreferrer"},"https://github.com/duke-git/lancet/blob/main/function/watcher.go")])],-1),i=s("div",{STYLE:"page-break-after: always;"},null,-1),u=n(`<h2 id="Usage-" tabindex="-1">Usage: <a class="header-anchor" href="#Usage-" aria-label="Permalink to &quot;Usage:&quot;"></a></h2><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span></code></pre></div>`,2),A=s("div",{STYLE:"page-break-after: always;"},null,-1),d=n('<h2 id="Index" tabindex="-1">Index <a class="header-anchor" href="#Index" aria-label="Permalink to &quot;Index&quot;"></a></h2><ul><li><a href="#After">After</a></li><li><a href="#Before">Before</a></li><li><a href="#CurryFn">CurryFn</a></li><li><a href="#Compose">Compose</a></li><li><a href="#Debounced">Debounced</a></li><li><a href="#Delay">Delay</a></li><li><a href="#Schedule">Schedule</a></li><li><a href="#Pipeline">Pipeline</a></li><li><a href="#Watcher">Watcher</a></li></ul>',2),E=s("div",{STYLE:"page-break-after: always;"},null,-1),f=n(`<h2 id="Documentation" tabindex="-1">Documentation <a class="header-anchor" href="#Documentation" aria-label="Permalink to &quot;Documentation&quot;"></a></h2><h3 id="After" tabindex="-1"><span id="After">After</span> <a class="header-anchor" href="#After" aria-label="Permalink to &quot;&lt;span id=&quot;After&quot;&gt;After&lt;/span&gt;&quot;"></a></h3><p>Creates a function that invokes given func once it&#39;s called n or more times.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">After</span><span style="color:#F6F6F4;">(n </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">, fn any) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any) []reflect.Value</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">After</span><span style="color:#999999;">(</span><span style="color:#393A34;">n </span><span style="color:#AB5959;">int</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">reflect</span><span style="color:#999999;">.</span><span style="color:#393A34;">Value</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/eRD5k2vzUVX" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fn </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">After</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(</span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">hello</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"><span style="color:#F6F6F4;"> })</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">fn</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">After</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">hello</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">})</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Before" tabindex="-1"><span id="Before">Before</span> <a class="header-anchor" href="#Before" aria-label="Permalink to &quot;&lt;span id=&quot;Before&quot;&gt;Before&lt;/span&gt;&quot;"></a></h3><p>creates a function that invokes func once it&#39;s called less than n times.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Before</span><span style="color:#F6F6F4;">(n </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">, fn any) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any) []reflect.Value</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Before</span><span style="color:#999999;">(</span><span style="color:#393A34;">n </span><span style="color:#AB5959;">int</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#393A34;">reflect</span><span style="color:#999999;">.</span><span style="color:#393A34;">Value</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/0HqUDIFZ3IL" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fn </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Before</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">, </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(</span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">hello</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"><span style="color:#F6F6F4;"> })</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">fn</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Before</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">hello</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">})</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="CurryFn" tabindex="-1"><span id="CurryFn">CurryFn</span> <a class="header-anchor" href="#CurryFn" aria-label="Permalink to &quot;&lt;span id=&quot;CurryFn&quot;&gt;CurryFn&lt;/span&gt;&quot;"></a></h3><p>Make curry function.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">CurryFn</span><span style="color:#F6F6F4;">[T any] </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (cf CurryFn[T]) </span><span style="color:#62E884;">New</span><span style="color:#F6F6F4;">(val T) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">CurryFn</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">]</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">cf CurryFn</span><span style="color:#999999;">[</span><span style="color:#393A34;">T</span><span style="color:#999999;">])</span><span style="color:#393A34;"> </span><span style="color:#59873A;">New</span><span style="color:#999999;">(</span><span style="color:#393A34;">val T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/5HopfDwANKX" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> add </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(a, b </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> a </span><span style="color:#F286C4;">+</span><span style="color:#F6F6F4;"> b</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">var</span><span style="color:#F6F6F4;"> addCurry function.CurryFn[</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">] </span><span style="color:#F286C4;">=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(values </span><span style="color:#F286C4;">...</span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">add</span><span style="color:#F6F6F4;">(values[</span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">], values[</span><span style="color:#BF9EEE;">1</span><span style="color:#F6F6F4;">])</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> add1 </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> addCurry.</span><span style="color:#97E1F1;">New</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">1</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> result </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">add1</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 3</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">add</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">a</span><span style="color:#999999;">,</span><span style="color:#393A34;"> b </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> a </span><span style="color:#AB5959;">+</span><span style="color:#393A34;"> b</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">var</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">addCurry</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#393A34;">CurryFn</span><span style="color:#999999;">[</span><span style="color:#AB5959;">int</span><span style="color:#999999;">]</span><span style="color:#393A34;"> </span><span style="color:#999999;">=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">values </span><span style="color:#AB5959;">...int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#998418;">add</span><span style="color:#999999;">(</span><span style="color:#393A34;">values</span><span style="color:#999999;">[</span><span style="color:#2F798A;">0</span><span style="color:#999999;">],</span><span style="color:#393A34;"> values</span><span style="color:#999999;">[</span><span style="color:#2F798A;">1</span><span style="color:#999999;">])</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">add1</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> addCurry</span><span style="color:#999999;">.</span><span style="color:#998418;">New</span><span style="color:#999999;">(</span><span style="color:#2F798A;">1</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">result</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#998418;">add1</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">result</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 3</span></span>
<span class="line"><span style="color:#393A34;">}</span></span></code></pre></div><h3 id="Compose" tabindex="-1"><span id="Compose">Compose</span> <a class="header-anchor" href="#Compose" aria-label="Permalink to &quot;&lt;span id=&quot;Compose&quot;&gt;Compose&lt;/span&gt;&quot;"></a></h3><p>Compose the function list from right to left, then return the composed function.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> Compose[T any](fnList </span><span style="color:#F286C4;">...func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(</span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">T) T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> Compose</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">](</span><span style="color:#393A34;">fnList </span><span style="color:#AB5959;">...</span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#AB5959;">...</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/KKfugD4PKYF" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> toUpper </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(strs </span><span style="color:#F286C4;">...</span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> strings.</span><span style="color:#97E1F1;">ToUpper</span><span style="color:#F6F6F4;">(strs[</span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">])</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> toLower </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(strs </span><span style="color:#F286C4;">...</span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> strings.</span><span style="color:#97E1F1;">ToLower</span><span style="color:#F6F6F4;">(strs[</span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">])</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> transform </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Compose</span><span style="color:#F6F6F4;">(toUpper, toLower)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> result </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">transform</span><span style="color:#F6F6F4;">(</span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">aBCde</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// ABCDE</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">toUpper</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs </span><span style="color:#AB5959;">...</span><span style="color:#AB5959;">string</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">string</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> strings</span><span style="color:#999999;">.</span><span style="color:#998418;">ToUpper</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs</span><span style="color:#999999;">[</span><span style="color:#2F798A;">0</span><span style="color:#999999;">])</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">toLower</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs </span><span style="color:#AB5959;">...</span><span style="color:#AB5959;">string</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">string</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> strings</span><span style="color:#999999;">.</span><span style="color:#998418;">ToLower</span><span style="color:#999999;">(</span><span style="color:#393A34;">strs</span><span style="color:#999999;">[</span><span style="color:#2F798A;">0</span><span style="color:#999999;">])</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">transform</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Compose</span><span style="color:#999999;">(</span><span style="color:#393A34;">toUpper</span><span style="color:#999999;">,</span><span style="color:#393A34;"> toLower</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">result</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#998418;">transform</span><span style="color:#999999;">(</span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">aBCde</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">result</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// ABCDE</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Debounced" tabindex="-1"><span id="Debounced">Debounced</span> <a class="header-anchor" href="#Debounced" aria-label="Permalink to &quot;&lt;span id=&quot;Debounced&quot;&gt;Debounced&lt;/span&gt;&quot;"></a></h3><p>Creates a debounced function that delays invoking fn until after wait duration have elapsed since the last time the debounced function was invoked.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Debounced</span><span style="color:#F6F6F4;">(fn </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(), duration time.Duration) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">()</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Debounced</span><span style="color:#999999;">(</span><span style="color:#393A34;">fn </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(),</span><span style="color:#393A34;"> duration time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/absuEGB_GN7" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> add </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count</span><span style="color:#F286C4;">++</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> debouncedAdd </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Debounced</span><span style="color:#F6F6F4;">(add, </span><span style="color:#BF9EEE;">50</span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">time.Microsecond)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> time.</span><span style="color:#97E1F1;">Sleep</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">100</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> time.Millisecond)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(count)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">debouncedAdd</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> time.</span><span style="color:#97E1F1;">Sleep</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">100</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> time.Millisecond)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(count)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 1</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 2</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">count</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">add</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> count</span><span style="color:#AB5959;">++</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">debouncedAdd</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Debounced</span><span style="color:#999999;">(</span><span style="color:#393A34;">add</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">50</span><span style="color:#AB5959;">*</span><span style="color:#393A34;">time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Microsecond</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#998418;">Sleep</span><span style="color:#999999;">(</span><span style="color:#2F798A;">100</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Millisecond</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">count</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">debouncedAdd</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#998418;">Sleep</span><span style="color:#999999;">(</span><span style="color:#2F798A;">100</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Millisecond</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">count</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 1</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 2</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Delay" tabindex="-1"><span id="Delay">Delay</span> <a class="header-anchor" href="#Delay" aria-label="Permalink to &quot;&lt;span id=&quot;Delay&quot;&gt;Delay&lt;/span&gt;&quot;"></a></h3><p>Invoke function after delayed time.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Delay</span><span style="color:#F6F6F4;">(delay time.Duration, fn any, args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any)</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Delay</span><span style="color:#999999;">(</span><span style="color:#393A34;">delay time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">,</span><span style="color:#393A34;"> args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/Ivtc2ZE-Tye" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">var</span><span style="color:#F6F6F4;"> print </span><span style="color:#F286C4;">=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(s </span><span style="color:#97E1F1;font-style:italic;">string</span><span style="color:#F6F6F4;">) {</span></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(s)</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Delay</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">time.Second, print, </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">hello</span><span style="color:#DEE492;">&quot;</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// hello</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">var</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">print</span><span style="color:#393A34;"> </span><span style="color:#999999;">=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">s </span><span style="color:#AB5959;">string</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">s</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Delay</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#AB5959;">*</span><span style="color:#393A34;">time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Second</span><span style="color:#999999;">,</span><span style="color:#393A34;"> print</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#B56959;">hello</span><span style="color:#B5695999;">&quot;</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// hello</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Schedule" tabindex="-1"><span id="Schedule">Schedule</span> <a class="header-anchor" href="#Schedule" aria-label="Permalink to &quot;&lt;span id=&quot;Schedule&quot;&gt;Schedule&lt;/span&gt;&quot;"></a></h3><p>Invoke function every duration time, until close the returned bool chan.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">Schedule</span><span style="color:#F6F6F4;">(d time.Duration, fn any, args </span><span style="color:#F286C4;">...</span><span style="color:#F6F6F4;">any) </span><span style="color:#F286C4;">chan</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">bool</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Schedule</span><span style="color:#999999;">(</span><span style="color:#393A34;">d time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration</span><span style="color:#999999;">,</span><span style="color:#393A34;"> fn any</span><span style="color:#999999;">,</span><span style="color:#393A34;"> args </span><span style="color:#AB5959;">...</span><span style="color:#393A34;">any</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">chan</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">bool</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/hbON-Xeyn5N" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> increase </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> count</span><span style="color:#F286C4;">++</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> stop </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Schedule</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">time.Second, increase)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> time.</span><span style="color:#97E1F1;">Sleep</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> time.Second)</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">close</span><span style="color:#F6F6F4;">(stop)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(count)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 2</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">count</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">increase</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> count</span><span style="color:#AB5959;">++</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">stop</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Schedule</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#AB5959;">*</span><span style="color:#393A34;">time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Second</span><span style="color:#999999;">,</span><span style="color:#393A34;"> increase</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#998418;">Sleep</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Second</span><span style="color:#999999;">)</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">close</span><span style="color:#999999;">(</span><span style="color:#393A34;">stop</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">count</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 2</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Pipeline" tabindex="-1"><span id="Pipeline">Pipeline</span> <a class="header-anchor" href="#Pipeline" aria-label="Permalink to &quot;&lt;span id=&quot;Pipeline&quot;&gt;Pipeline&lt;/span&gt;&quot;"></a></h3><p>Pipeline takes a list of functions and returns a function whose param will be passed into the functions one by one.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> Pipeline[T any](funcs </span><span style="color:#F286C4;">...func</span><span style="color:#F6F6F4;">(T) T) </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(T) T</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> Pipeline</span><span style="color:#999999;">[</span><span style="color:#393A34;">T any</span><span style="color:#999999;">](</span><span style="color:#393A34;">funcs </span><span style="color:#AB5959;">...</span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">T</span><span style="color:#999999;">)</span><span style="color:#393A34;"> T</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/mPdUVvj6HD6" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> addOne </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(x </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> x </span><span style="color:#F286C4;">+</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">1</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> double </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(x </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> x</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;"> square </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;">(x </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;">) </span><span style="color:#97E1F1;font-style:italic;">int</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">return</span><span style="color:#F6F6F4;"> x </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;"> x</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fn </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">Pipeline</span><span style="color:#F6F6F4;">(addOne, double, square)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> result </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">fn</span><span style="color:#F6F6F4;">(</span><span style="color:#BF9EEE;">2</span><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(result)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// Output:</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#7B7F8B;">// 36</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">addOne</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">x </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> x </span><span style="color:#AB5959;">+</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">1</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">double</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">x </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">2</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> x</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">square</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">func</span><span style="color:#999999;">(</span><span style="color:#393A34;">x </span><span style="color:#AB5959;">int</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">int</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">return</span><span style="color:#393A34;"> x </span><span style="color:#AB5959;">*</span><span style="color:#393A34;"> x</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">fn</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">Pipeline</span><span style="color:#999999;">(</span><span style="color:#393A34;">addOne</span><span style="color:#999999;">,</span><span style="color:#393A34;"> double</span><span style="color:#999999;">,</span><span style="color:#393A34;"> square</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">result</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#998418;">fn</span><span style="color:#999999;">(</span><span style="color:#2F798A;">2</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">result</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// Output:</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">// 36</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div><h3 id="Watcher" tabindex="-1"><span id="Watcher">Watcher</span> <a class="header-anchor" href="#Watcher" aria-label="Permalink to &quot;&lt;span id=&quot;Watcher&quot;&gt;Watcher&lt;/span&gt;&quot;"></a></h3><p>Watcher is used for record code excution time. can start/stop/reset the watch timer. get the elapsed time of function execution.</p><p><b>Signature:</b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">type</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;font-style:italic;">Watcher</span><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">struct</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> startTime </span><span style="color:#97E1F1;font-style:italic;">int64</span></span>
<span class="line"><span style="color:#F6F6F4;"> stopTime </span><span style="color:#97E1F1;font-style:italic;">int64</span></span>
<span class="line"><span style="color:#F6F6F4;"> excuting </span><span style="color:#97E1F1;font-style:italic;">bool</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">NewWatcher</span><span style="color:#F6F6F4;">() </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">Start</span><span style="color:#F6F6F4;">() </span><span style="color:#7B7F8B;">//start the watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">Stop</span><span style="color:#F6F6F4;">() </span><span style="color:#7B7F8B;">//stop the watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">Reset</span><span style="color:#F6F6F4;">() </span><span style="color:#7B7F8B;">//reset the watcher</span></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> (w </span><span style="color:#F286C4;">*</span><span style="color:#F6F6F4;">Watcher) </span><span style="color:#62E884;">GetElapsedTime</span><span style="color:#F6F6F4;">() time.Duration </span><span style="color:#7B7F8B;">//get the elapsed time of function execution</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">type</span><span style="color:#393A34;"> </span><span style="color:#2E8F82;">Watcher</span><span style="color:#393A34;"> </span><span style="color:#1E754F;">struct</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> startTime </span><span style="color:#AB5959;">int64</span></span>
<span class="line"><span style="color:#393A34;"> stopTime </span><span style="color:#AB5959;">int64</span></span>
<span class="line"><span style="color:#393A34;"> excuting </span><span style="color:#AB5959;">bool</span></span>
<span class="line"><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">NewWatcher</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Start</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//start the watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Stop</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//stop the watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">Reset</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//reset the watcher</span></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span><span style="color:#393A34;">w </span><span style="color:#AB5959;">*</span><span style="color:#393A34;">Watcher</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#59873A;">GetElapsedTime</span><span style="color:#999999;">()</span><span style="color:#393A34;"> time</span><span style="color:#999999;">.</span><span style="color:#393A34;">Duration </span><span style="color:#A0ADA0;">//get the elapsed time of function execution</span></span></code></pre></div><p><b>Example:<span style="float:right;display:inline-block;"><a href="https://go.dev/play/p/l2yrOpCLd1I" target="_blank" rel="noreferrer">Run</a></span></b></p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki dracula-soft vp-code-dark"><code><span class="line"><span style="color:#F286C4;">package</span><span style="color:#F6F6F4;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">import</span><span style="color:#F6F6F4;"> (</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">fmt</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#DEE492;">&quot;</span><span style="color:#E7EE98;">github.com/duke-git/lancet/v2/function</span><span style="color:#DEE492;">&quot;</span></span>
<span class="line"><span style="color:#F6F6F4;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">main</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> w </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> function.</span><span style="color:#97E1F1;">NewWatcher</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">Start</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">longRunningTask</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(w.excuting) </span><span style="color:#7B7F8B;">//true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">Stop</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> eapsedTime </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">GetElapsedTime</span><span style="color:#F6F6F4;">().</span><span style="color:#97E1F1;">Milliseconds</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> fmt.</span><span style="color:#97E1F1;">Println</span><span style="color:#F6F6F4;">(eapsedTime)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F6F6F4;"> w.</span><span style="color:#97E1F1;">Reset</span><span style="color:#F6F6F4;">()</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F286C4;">func</span><span style="color:#F6F6F4;"> </span><span style="color:#62E884;">longRunningTask</span><span style="color:#F6F6F4;">() {</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">var</span><span style="color:#F6F6F4;"> slice []</span><span style="color:#97E1F1;font-style:italic;">int64</span></span>
<span class="line"><span style="color:#F6F6F4;"> </span><span style="color:#F286C4;">for</span><span style="color:#F6F6F4;"> i </span><span style="color:#F286C4;">:=</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">0</span><span style="color:#F6F6F4;">; i </span><span style="color:#F286C4;">&lt;</span><span style="color:#F6F6F4;"> </span><span style="color:#BF9EEE;">10000000</span><span style="color:#F6F6F4;">; i</span><span style="color:#F286C4;">++</span><span style="color:#F6F6F4;"> {</span></span>
<span class="line"><span style="color:#F6F6F4;"> slice </span><span style="color:#F286C4;">=</span><span style="color:#F6F6F4;"> </span><span style="color:#97E1F1;">append</span><span style="color:#F6F6F4;">(slice, </span><span style="color:#97E1F1;">int64</span><span style="color:#F6F6F4;">(i))</span></span>
<span class="line"><span style="color:#F6F6F4;"> }</span></span>
<span class="line"><span style="color:#F6F6F4;">}</span></span></code></pre><pre class="shiki vitesse-light vp-code-light"><code><span class="line"><span style="color:#1E754F;">package</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">import</span><span style="color:#393A34;"> </span><span style="color:#999999;">(</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">fmt</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B5695999;">&quot;</span><span style="color:#59873A;">github.com/duke-git/lancet/v2/function</span><span style="color:#B5695999;">&quot;</span></span>
<span class="line"><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">main</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">w</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> function</span><span style="color:#999999;">.</span><span style="color:#998418;">NewWatcher</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">Start</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#998418;">longRunningTask</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">w</span><span style="color:#999999;">.</span><span style="color:#393A34;">excuting</span><span style="color:#999999;">)</span><span style="color:#393A34;"> </span><span style="color:#A0ADA0;">//true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">Stop</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">eapsedTime</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">GetElapsedTime</span><span style="color:#999999;">().</span><span style="color:#998418;">Milliseconds</span><span style="color:#999999;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> fmt</span><span style="color:#999999;">.</span><span style="color:#998418;">Println</span><span style="color:#999999;">(</span><span style="color:#393A34;">eapsedTime</span><span style="color:#999999;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#393A34;"> w</span><span style="color:#999999;">.</span><span style="color:#998418;">Reset</span><span style="color:#999999;">()</span></span>
<span class="line"><span style="color:#999999;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;">func</span><span style="color:#393A34;"> </span><span style="color:#59873A;">longRunningTask</span><span style="color:#999999;">()</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">var</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">slice</span><span style="color:#393A34;"> </span><span style="color:#999999;">[]</span><span style="color:#AB5959;">int64</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#1E754F;">for</span><span style="color:#393A34;"> </span><span style="color:#B07D48;">i</span><span style="color:#393A34;"> </span><span style="color:#999999;">:=</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">0</span><span style="color:#999999;">;</span><span style="color:#393A34;"> i </span><span style="color:#AB5959;">&lt;</span><span style="color:#393A34;"> </span><span style="color:#2F798A;">10000000</span><span style="color:#999999;">;</span><span style="color:#393A34;"> i</span><span style="color:#AB5959;">++</span><span style="color:#393A34;"> </span><span style="color:#999999;">{</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#B07D48;">slice</span><span style="color:#393A34;"> </span><span style="color:#999999;">=</span><span style="color:#393A34;"> </span><span style="color:#998418;">append</span><span style="color:#999999;">(</span><span style="color:#393A34;">slice</span><span style="color:#999999;">,</span><span style="color:#393A34;"> </span><span style="color:#998418;">int64</span><span style="color:#999999;">(</span><span style="color:#393A34;">i</span><span style="color:#999999;">))</span></span>
<span class="line"><span style="color:#393A34;"> </span><span style="color:#999999;">}</span></span>
<span class="line"><span style="color:#999999;">}</span></span></code></pre></div>`,55),h=[t,c,r,y,F,i,u,A,d,E,f];function g(m,B,C,b,v,k){return p(),o("div",null,h)}const _=l(e,[["render",g]]);export{q as __pageData,_ as default};