首页 技术 正文
技术 2022年11月21日
0 收藏 593 点赞 2,898 浏览 26982 个字

<!–
.markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178, 191); background-color: rgb(40, 44, 52); overflow: auto; }
.markdown-preview:not([data-use-github-style]) >–> :first-child { margin-top: 0px; }
.markdown-preview:not([data-use-github-style]) h1, .markdown-preview:not([data-use-github-style]) h2, .markdown-preview:not([data-use-github-style]) h3, .markdown-preview:not([data-use-github-style]) h4, .markdown-preview:not([data-use-github-style]) h5, .markdown-preview:not([data-use-github-style]) h6 { line-height: 1.2; margin-top: 1.5em; margin-bottom: 0.5em; color: rgb(255, 255, 255); }
.markdown-preview:not([data-use-github-style]) h1 { font-size: 2.4em; font-weight: 300; }
.markdown-preview:not([data-use-github-style]) h2 { font-size: 1.8em; font-weight: 400; }
.markdown-preview:not([data-use-github-style]) h3 { font-size: 1.5em; font-weight: 500; }
.markdown-preview:not([data-use-github-style]) h4 { font-size: 1.2em; font-weight: 600; }
.markdown-preview:not([data-use-github-style]) h5 { font-size: 1.1em; font-weight: 600; }
.markdown-preview:not([data-use-github-style]) h6 { font-size: 1em; font-weight: 600; }
.markdown-preview:not([data-use-github-style]) strong { color: rgb(255, 255, 255); }
.markdown-preview:not([data-use-github-style]) del { color: rgb(124, 135, 156); }
.markdown-preview:not([data-use-github-style]) a, .markdown-preview:not([data-use-github-style]) a code { color: rgb(82, 139, 255); }
.markdown-preview:not([data-use-github-style]) img { max-width: 100%; }
.markdown-preview:not([data-use-github-style]) > p { margin-top: 0px; margin-bottom: 1.5em; }
.markdown-preview:not([data-use-github-style]) > ul, .markdown-preview:not([data-use-github-style]) > ol { margin-bottom: 1.5em; }
.markdown-preview:not([data-use-github-style]) blockquote { margin: 1.5em 0px; font-size: inherit; color: rgb(124, 135, 156); border-color: rgb(75, 83, 98); border-width: 4px; }
.markdown-preview:not([data-use-github-style]) hr { margin: 3em 0px; border-top: 2px dashed rgb(75, 83, 98); background: none; }
.markdown-preview:not([data-use-github-style]) table { margin: 1.5em 0px; }
.markdown-preview:not([data-use-github-style]) th { color: rgb(255, 255, 255); }
.markdown-preview:not([data-use-github-style]) th, .markdown-preview:not([data-use-github-style]) td { padding: 0.66em 1em; border: 1px solid rgb(75, 83, 98); }
.markdown-preview:not([data-use-github-style]) code { color: rgb(255, 255, 255); background-color: rgb(58, 63, 75); }
.markdown-preview:not([data-use-github-style]) pre.editor-colors { margin: 1.5em 0px; padding: 1em; font-size: 0.92em; border-radius: 3px; background-color: rgb(49, 54, 63); }
.markdown-preview:not([data-use-github-style]) kbd { color: rgb(255, 255, 255); border-width: 1px 1px 2px; border-style: solid; border-color: rgb(75, 83, 98) rgb(75, 83, 98) rgb(62, 68, 81); border-image: initial; background-color: rgb(58, 63, 75); }
.markdown-preview[data-use-github-style] { font-family: “Helvetica Neue”, Helvetica, “Segoe UI”, Arial, freesans, sans-serif; line-height: 1.6; word-wrap: break-word; padding: 30px; font-size: 16px; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); overflow: scroll; }
.markdown-preview[data-use-github-style] > :first-child { margin-top: 0px !important; }
.markdown-preview[data-use-github-style] > :last-child { margin-bottom: 0px !important; }
.markdown-preview[data-use-github-style] a:not([href]) { color: inherit; text-decoration: none; }
.markdown-preview[data-use-github-style] .absent { color: rgb(204, 0, 0); }
.markdown-preview[data-use-github-style] .anchor { position: absolute; top: 0px; left: 0px; display: block; padding-right: 6px; padding-left: 30px; margin-left: -30px; }
.markdown-preview[data-use-github-style] .anchor:focus { outline: none; }
.markdown-preview[data-use-github-style] h1, .markdown-preview[data-use-github-style] h2, .markdown-preview[data-use-github-style] h3, .markdown-preview[data-use-github-style] h4, .markdown-preview[data-use-github-style] h5, .markdown-preview[data-use-github-style] h6 { position: relative; margin-top: 1em; margin-bottom: 16px; font-weight: bold; line-height: 1.4; }
.markdown-preview[data-use-github-style] h1 .octicon-link, .markdown-preview[data-use-github-style] h2 .octicon-link, .markdown-preview[data-use-github-style] h3 .octicon-link, .markdown-preview[data-use-github-style] h4 .octicon-link, .markdown-preview[data-use-github-style] h5 .octicon-link, .markdown-preview[data-use-github-style] h6 .octicon-link { display: none; color: rgb(0, 0, 0); vertical-align: middle; }
.markdown-preview[data-use-github-style] h1:hover .anchor, .markdown-preview[data-use-github-style] h2:hover .anchor, .markdown-preview[data-use-github-style] h3:hover .anchor, .markdown-preview[data-use-github-style] h4:hover .anchor, .markdown-preview[data-use-github-style] h5:hover .anchor, .markdown-preview[data-use-github-style] h6:hover .anchor { padding-left: 8px; margin-left: -30px; text-decoration: none; }
.markdown-preview[data-use-github-style] h1:hover .anchor .octicon-link, .markdown-preview[data-use-github-style] h2:hover .anchor .octicon-link, .markdown-preview[data-use-github-style] h3:hover .anchor .octicon-link, .markdown-preview[data-use-github-style] h4:hover .anchor .octicon-link, .markdown-preview[data-use-github-style] h5:hover .anchor .octicon-link, .markdown-preview[data-use-github-style] h6:hover .anchor .octicon-link { display: inline-block; }
.markdown-preview[data-use-github-style] h1 tt, .markdown-preview[data-use-github-style] h2 tt, .markdown-preview[data-use-github-style] h3 tt, .markdown-preview[data-use-github-style] h4 tt, .markdown-preview[data-use-github-style] h5 tt, .markdown-preview[data-use-github-style] h6 tt, .markdown-preview[data-use-github-style] h1 code, .markdown-preview[data-use-github-style] h2 code, .markdown-preview[data-use-github-style] h3 code, .markdown-preview[data-use-github-style] h4 code, .markdown-preview[data-use-github-style] h5 code, .markdown-preview[data-use-github-style] h6 code { font-size: inherit; }
.markdown-preview[data-use-github-style] h1 { padding-bottom: 0.3em; font-size: 2.25em; line-height: 1.2; border-bottom: 1px solid rgb(238, 238, 238); }
.markdown-preview[data-use-github-style] h1 .anchor { line-height: 1; }
.markdown-preview[data-use-github-style] h2 { padding-bottom: 0.3em; font-size: 1.75em; line-height: 1.225; border-bottom: 1px solid rgb(238, 238, 238); }
.markdown-preview[data-use-github-style] h2 .anchor { line-height: 1; }
.markdown-preview[data-use-github-style] h3 { font-size: 1.5em; line-height: 1.43; }
.markdown-preview[data-use-github-style] h3 .anchor { line-height: 1.2; }
.markdown-preview[data-use-github-style] h4 { font-size: 1.25em; }
.markdown-preview[data-use-github-style] h4 .anchor { line-height: 1.2; }
.markdown-preview[data-use-github-style] h5 { font-size: 1em; }
.markdown-preview[data-use-github-style] h5 .anchor { line-height: 1.1; }
.markdown-preview[data-use-github-style] h6 { font-size: 1em; color: rgb(119, 119, 119); }
.markdown-preview[data-use-github-style] h6 .anchor { line-height: 1.1; }
.markdown-preview[data-use-github-style] p, .markdown-preview[data-use-github-style] blockquote, .markdown-preview[data-use-github-style] ul, .markdown-preview[data-use-github-style] ol, .markdown-preview[data-use-github-style] dl, .markdown-preview[data-use-github-style] table, .markdown-preview[data-use-github-style] pre { margin-top: 0px; margin-bottom: 16px; }
.markdown-preview[data-use-github-style] hr { height: 4px; padding: 0px; margin: 16px 0px; background-color: rgb(231, 231, 231); border: 0px none; }
.markdown-preview[data-use-github-style] ul, .markdown-preview[data-use-github-style] ol { padding-left: 2em; }
.markdown-preview[data-use-github-style] ul.no-list, .markdown-preview[data-use-github-style] ol.no-list { padding: 0px; list-style-type: none; }
.markdown-preview[data-use-github-style] ul ul, .markdown-preview[data-use-github-style] ul ol, .markdown-preview[data-use-github-style] ol ol, .markdown-preview[data-use-github-style] ol ul { margin-top: 0px; margin-bottom: 0px; }
.markdown-preview[data-use-github-style] li > p { margin-top: 16px; }
.markdown-preview[data-use-github-style] dl { padding: 0px; }
.markdown-preview[data-use-github-style] dl dt { padding: 0px; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: bold; }
.markdown-preview[data-use-github-style] dl dd { padding: 0px 16px; margin-bottom: 16px; }
.markdown-preview[data-use-github-style] blockquote { padding: 0px 15px; color: rgb(119, 119, 119); border-left: 4px solid rgb(221, 221, 221); }
.markdown-preview[data-use-github-style] blockquote > :first-child { margin-top: 0px; }
.markdown-preview[data-use-github-style] blockquote > :last-child { margin-bottom: 0px; }
.markdown-preview[data-use-github-style] table { display: block; width: 100%; overflow: auto; word-break: keep-all; }
.markdown-preview[data-use-github-style] table th { font-weight: bold; }
.markdown-preview[data-use-github-style] table th, .markdown-preview[data-use-github-style] table td { padding: 6px 13px; border: 1px solid rgb(221, 221, 221); }
.markdown-preview[data-use-github-style] table tr { background-color: rgb(255, 255, 255); border-top: 1px solid rgb(204, 204, 204); }
.markdown-preview[data-use-github-style] table tr:nth-child(2n) { background-color: rgb(248, 248, 248); }
.markdown-preview[data-use-github-style] img { max-width: 100%; box-sizing: border-box; }
.markdown-preview[data-use-github-style] .emoji { max-width: none; }
.markdown-preview[data-use-github-style] span.frame { display: block; overflow: hidden; }
.markdown-preview[data-use-github-style] span.frame > span { display: block; float: left; width: auto; padding: 7px; margin: 13px 0px 0px; overflow: hidden; border: 1px solid rgb(221, 221, 221); }
.markdown-preview[data-use-github-style] span.frame span img { display: block; float: left; }
.markdown-preview[data-use-github-style] span.frame span span { display: block; padding: 5px 0px 0px; clear: both; color: rgb(51, 51, 51); }
.markdown-preview[data-use-github-style] span.align-center { display: block; overflow: hidden; clear: both; }
.markdown-preview[data-use-github-style] span.align-center > span { display: block; margin: 13px auto 0px; overflow: hidden; text-align: center; }
.markdown-preview[data-use-github-style] span.align-center span img { margin: 0px auto; text-align: center; }
.markdown-preview[data-use-github-style] span.align-right { display: block; overflow: hidden; clear: both; }
.markdown-preview[data-use-github-style] span.align-right > span { display: block; margin: 13px 0px 0px; overflow: hidden; text-align: right; }
.markdown-preview[data-use-github-style] span.align-right span img { margin: 0px; text-align: right; }
.markdown-preview[data-use-github-style] span.float-left { display: block; float: left; margin-right: 13px; overflow: hidden; }
.markdown-preview[data-use-github-style] span.float-left span { margin: 13px 0px 0px; }
.markdown-preview[data-use-github-style] span.float-right { display: block; float: right; margin-left: 13px; overflow: hidden; }
.markdown-preview[data-use-github-style] span.float-right > span { display: block; margin: 13px auto 0px; overflow: hidden; text-align: right; }
.markdown-preview[data-use-github-style] code, .markdown-preview[data-use-github-style] tt { padding: 0.2em 0px; margin: 0px; font-size: 85%; background-color: rgba(0, 0, 0, 0.0392157); border-radius: 3px; }
.markdown-preview[data-use-github-style] code::before, .markdown-preview[data-use-github-style] tt::before, .markdown-preview[data-use-github-style] code::after, .markdown-preview[data-use-github-style] tt::after { letter-spacing: -0.2em; content: ” “; }
.markdown-preview[data-use-github-style] code br, .markdown-preview[data-use-github-style] tt br { display: none; }
.markdown-preview[data-use-github-style] del code { text-decoration: inherit; }
.markdown-preview[data-use-github-style] pre > code { padding: 0px; margin: 0px; font-size: 100%; word-break: normal; white-space: pre; background: transparent; border: 0px; }
.markdown-preview[data-use-github-style] .highlight { margin-bottom: 16px; }
.markdown-preview[data-use-github-style] .highlight pre, .markdown-preview[data-use-github-style] pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: rgb(247, 247, 247); border-radius: 3px; }
.markdown-preview[data-use-github-style] .highlight pre { margin-bottom: 0px; word-break: normal; }
.markdown-preview[data-use-github-style] pre { word-wrap: normal; }
.markdown-preview[data-use-github-style] pre code, .markdown-preview[data-use-github-style] pre tt { display: inline; max-width: initial; padding: 0px; margin: 0px; overflow: initial; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0px; }
.markdown-preview[data-use-github-style] pre code::before, .markdown-preview[data-use-github-style] pre tt::before, .markdown-preview[data-use-github-style] pre code::after, .markdown-preview[data-use-github-style] pre tt::after { content: normal; }
.markdown-preview[data-use-github-style] kbd { display: inline-block; padding: 3px 5px; font-size: 11px; line-height: 10px; color: rgb(85, 85, 85); vertical-align: middle; background-color: rgb(252, 252, 252); border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204) rgb(204, 204, 204) rgb(187, 187, 187); border-image: initial; border-radius: 3px; box-shadow: rgb(187, 187, 187) 0px -1px 0px inset; }
.markdown-preview[data-use-github-style] a { color: rgb(51, 122, 183); }
.markdown-preview[data-use-github-style] code { color: inherit; }
.markdown-preview[data-use-github-style] pre.editor-colors { padding: 0.8em 1em; margin-bottom: 1em; font-size: 0.85em; border-radius: 4px; overflow: auto; }
.scrollbars-visible-always .markdown-preview pre.editor-colors .vertical-scrollbar, .scrollbars-visible-always .markdown-preview pre.editor-colors .horizontal-scrollbar { visibility: hidden; }
.scrollbars-visible-always .markdown-preview pre.editor-colors:hover .vertical-scrollbar, .scrollbars-visible-always .markdown-preview pre.editor-colors:hover .horizontal-scrollbar { visibility: visible; }
.markdown-preview .task-list-item-checkbox { position: absolute; margin: 0.25em 0px 0px -1.4em; }
.bracket-matcher .region {
border-bottom: 1px dotted lime;
position: absolute;
}

.spell-check-misspelling .region {
border-bottom: 2px dotted rgba(255, 51, 51, 0.75);
}
.spell-check-corrections {
width: 25em !important;
}

pre.editor-colors {
background-color: #282c34;
color: #abb2bf;
}
pre.editor-colors .line.cursor-line {
background-color: rgba(153, 187, 255, 0.04);
}
pre.editor-colors .invisible {
color: #abb2bf;
}
pre.editor-colors .cursor {
border-left: 2px solid #528bff;
}
pre.editor-colors .selection .region {
background-color: #3e4451;
}
pre.editor-colors .bracket-matcher .region {
border-bottom: 1px solid #528bff;
box-sizing: border-box;
}
pre.editor-colors .invisible-character {
color: rgba(171, 178, 191, 0.15);
}
pre.editor-colors .indent-guide {
color: rgba(171, 178, 191, 0.15);
}
pre.editor-colors .wrap-guide {
background-color: rgba(171, 178, 191, 0.15);
}
pre.editor-colors .find-result .region.region.region,
pre.editor-colors .current-result .region.region.region {
border-radius: 2px;
background-color: rgba(82, 139, 255, 0.24);
transition: border-color 0.4s;
}
pre.editor-colors .find-result .region.region.region {
border: 2px solid transparent;
}
pre.editor-colors .current-result .region.region.region {
border: 2px solid #528bff;
transition-duration: .1s;
}
pre.editor-colors .gutter .line-number {
color: #636d83;
-webkit-font-smoothing: antialiased;
}
pre.editor-colors .gutter .line-number.cursor-line {
color: #abb2bf;
background-color: #2c313a;
}
pre.editor-colors .gutter .line-number.cursor-line-no-selection {
background-color: transparent;
}
pre.editor-colors .gutter .line-number .icon-right {
color: #abb2bf;
}
pre.editor-colors .gutter:not(.git-diff-icon) .line-number.git-line-removed.git-line-removed::before {
bottom: -3px;
}
pre.editor-colors .gutter:not(.git-diff-icon) .line-number.git-line-removed::after {
content: “”;
position: absolute;
left: 0px;
bottom: 0px;
width: 25px;
border-bottom: 1px dotted rgba(224, 82, 82, 0.5);
pointer-events: none;
}
pre.editor-colors .gutter .line-number.folded,
pre.editor-colors .gutter .line-number:after,
pre.editor-colors .fold-marker:after {
color: #abb2bf;
}
.syntax–comment {
color: #5c6370;
font-style: italic;
}
.syntax–comment .syntax–markup.syntax–link {
color: #5c6370;
}
.syntax–entity.syntax–name.syntax–type {
color: #e5c07b;
}
.syntax–entity.syntax–other.syntax–inherited-class {
color: #98c379;
}
.syntax–keyword {
color: #c678dd;
}
.syntax–keyword.syntax–control {
color: #c678dd;
}
.syntax–keyword.syntax–operator {
color: #abb2bf;
}
.syntax–keyword.syntax–other.syntax–special-method {
color: #61afef;
}
.syntax–keyword.syntax–other.syntax–unit {
color: #d19a66;
}
.syntax–storage {
color: #c678dd;
}
.syntax–storage.syntax–type.syntax–annotation,
.syntax–storage.syntax–type.syntax–primitive {
color: #c678dd;
}
.syntax–storage.syntax–modifier.syntax–package,
.syntax–storage.syntax–modifier.syntax–import {
color: #abb2bf;
}
.syntax–constant {
color: #d19a66;
}
.syntax–constant.syntax–variable {
color: #d19a66;
}
.syntax–constant.syntax–character.syntax–escape {
color: #56b6c2;
}
.syntax–constant.syntax–numeric {
color: #d19a66;
}
.syntax–constant.syntax–other.syntax–color {
color: #56b6c2;
}
.syntax–constant.syntax–other.syntax–symbol {
color: #56b6c2;
}
.syntax–variable {
color: #e06c75;
}
.syntax–variable.syntax–interpolation {
color: #be5046;
}
.syntax–variable.syntax–parameter {
color: #abb2bf;
}
.syntax–string {
color: #98c379;
}
.syntax–string.syntax–regexp {
color: #56b6c2;
}
.syntax–string.syntax–regexp .syntax–source.syntax–ruby.syntax–embedded {
color: #e5c07b;
}
.syntax–string.syntax–other.syntax–link {
color: #e06c75;
}
.syntax–punctuation.syntax–definition.syntax–comment {
color: #5c6370;
}
.syntax–punctuation.syntax–definition.syntax–method-parameters,
.syntax–punctuation.syntax–definition.syntax–function-parameters,
.syntax–punctuation.syntax–definition.syntax–parameters,
.syntax–punctuation.syntax–definition.syntax–separator,
.syntax–punctuation.syntax–definition.syntax–seperator,
.syntax–punctuation.syntax–definition.syntax–array {
color: #abb2bf;
}
.syntax–punctuation.syntax–definition.syntax–heading,
.syntax–punctuation.syntax–definition.syntax–identity {
color: #61afef;
}
.syntax–punctuation.syntax–definition.syntax–bold {
color: #e5c07b;
font-weight: bold;
}
.syntax–punctuation.syntax–definition.syntax–italic {
color: #c678dd;
font-style: italic;
}
.syntax–punctuation.syntax–section.syntax–embedded {
color: #be5046;
}
.syntax–punctuation.syntax–section.syntax–method,
.syntax–punctuation.syntax–section.syntax–class,
.syntax–punctuation.syntax–section.syntax–inner-class {
color: #abb2bf;
}
.syntax–support.syntax–class {
color: #e5c07b;
}
.syntax–support.syntax–type {
color: #56b6c2;
}
.syntax–support.syntax–function {
color: #56b6c2;
}
.syntax–support.syntax–function.syntax–any-method {
color: #61afef;
}
.syntax–entity.syntax–name.syntax–function {
color: #61afef;
}
.syntax–entity.syntax–name.syntax–class,
.syntax–entity.syntax–name.syntax–type.syntax–class {
color: #e5c07b;
}
.syntax–entity.syntax–name.syntax–section {
color: #61afef;
}
.syntax–entity.syntax–name.syntax–tag {
color: #e06c75;
}
.syntax–entity.syntax–other.syntax–attribute-name {
color: #d19a66;
}
.syntax–entity.syntax–other.syntax–attribute-name.syntax–id {
color: #61afef;
}
.syntax–meta.syntax–class {
color: #e5c07b;
}
.syntax–meta.syntax–class.syntax–body {
color: #abb2bf;
}
.syntax–meta.syntax–method-call,
.syntax–meta.syntax–method {
color: #abb2bf;
}
.syntax–meta.syntax–definition.syntax–variable {
color: #e06c75;
}
.syntax–meta.syntax–link {
color: #d19a66;
}
.syntax–meta.syntax–require {
color: #61afef;
}
.syntax–meta.syntax–selector {
color: #c678dd;
}
.syntax–meta.syntax–separator {
background-color: #373b41;
color: #abb2bf;
}
.syntax–meta.syntax–tag {
color: #abb2bf;
}
.syntax–underline {
text-decoration: underline;
}
.syntax–none {
color: #abb2bf;
}
.syntax–invalid.syntax–deprecated {
color: #523d14 !important;
background-color: #e0c285 !important;
}
.syntax–invalid.syntax–illegal {
color: white !important;
background-color: #e05252 !important;
}
.syntax–markup.syntax–bold {
color: #d19a66;
font-weight: bold;
}
.syntax–markup.syntax–changed {
color: #c678dd;
}
.syntax–markup.syntax–deleted {
color: #e06c75;
}
.syntax–markup.syntax–italic {
color: #c678dd;
font-style: italic;
}
.syntax–markup.syntax–heading {
color: #e06c75;
}
.syntax–markup.syntax–heading .syntax–punctuation.syntax–definition.syntax–heading {
color: #61afef;
}
.syntax–markup.syntax–link {
color: #56b6c2;
}
.syntax–markup.syntax–inserted {
color: #98c379;
}
.syntax–markup.syntax–quote {
color: #d19a66;
}
.syntax–markup.syntax–raw {
color: #98c379;
}
.syntax–source.syntax–c .syntax–keyword.syntax–operator {
color: #c678dd;
}
.syntax–source.syntax–cpp .syntax–keyword.syntax–operator {
color: #c678dd;
}
.syntax–source.syntax–cs .syntax–keyword.syntax–operator {
color: #c678dd;
}
.syntax–source.syntax–css .syntax–property-name,
.syntax–source.syntax–css .syntax–property-value {
color: #828997;
}
.syntax–source.syntax–css .syntax–property-name.syntax–support,
.syntax–source.syntax–css .syntax–property-value.syntax–support {
color: #abb2bf;
}
.syntax–source.syntax–elixir .syntax–source.syntax–embedded.syntax–source {
color: #abb2bf;
}
.syntax–source.syntax–elixir .syntax–constant.syntax–language,
.syntax–source.syntax–elixir .syntax–constant.syntax–numeric,
.syntax–source.syntax–elixir .syntax–constant.syntax–definition {
color: #61afef;
}
.syntax–source.syntax–elixir .syntax–variable.syntax–definition,
.syntax–source.syntax–elixir .syntax–variable.syntax–anonymous {
color: #c678dd;
}
.syntax–source.syntax–elixir .syntax–quoted {
color: #98c379;
}
.syntax–source.syntax–elixir .syntax–keyword.syntax–special-method,
.syntax–source.syntax–elixir .syntax–embedded.syntax–section,
.syntax–source.syntax–elixir .syntax–embedded.syntax–source.syntax–empty {
color: #e06c75;
}
.syntax–source.syntax–elixir .syntax–readwrite.syntax–module .syntax–punctuation {
color: #e06c75;
}
.syntax–source.syntax–elixir .syntax–regexp.syntax–section,
.syntax–source.syntax–elixir .syntax–regexp.syntax–string {
color: #be5046;
}
.syntax–source.syntax–elixir .syntax–separator,
.syntax–source.syntax–elixir .syntax–keyword.syntax–operator {
color: #d19a66;
}
.syntax–source.syntax–elixir .syntax–variable.syntax–constant {
color: #e5c07b;
}
.syntax–source.syntax–elixir .syntax–array,
.syntax–source.syntax–elixir .syntax–scope,
.syntax–source.syntax–elixir .syntax–section {
color: #828997;
}
.syntax–source.syntax–gfm .syntax–markup {
-webkit-font-smoothing: auto;
}
.syntax–source.syntax–gfm .syntax–link .syntax–entity {
color: #61afef;
}
.syntax–source.syntax–go .syntax–storage.syntax–type.syntax–string {
color: #c678dd;
}
.syntax–source.syntax–ini .syntax–keyword.syntax–other.syntax–definition.syntax–ini {
color: #e06c75;
}
.syntax–source.syntax–java .syntax–storage.syntax–modifier.syntax–import {
color: #e5c07b;
}
.syntax–source.syntax–java .syntax–storage.syntax–type {
color: #e5c07b;
}
.syntax–source.syntax–java .syntax–keyword.syntax–operator.syntax–instanceof {
color: #c678dd;
}
.syntax–source.syntax–java-properties .syntax–meta.syntax–key-pair {
color: #e06c75;
}
.syntax–source.syntax–java-properties .syntax–meta.syntax–key-pair > .syntax–punctuation {
color: #abb2bf;
}
.syntax–source.syntax–js .syntax–keyword.syntax–operator {
color: #56b6c2;
}
.syntax–source.syntax–js .syntax–keyword.syntax–operator.syntax–delete,
.syntax–source.syntax–js .syntax–keyword.syntax–operator.syntax–in,
.syntax–source.syntax–js .syntax–keyword.syntax–operator.syntax–of,
.syntax–source.syntax–js .syntax–keyword.syntax–operator.syntax–instanceof,
.syntax–source.syntax–js .syntax–keyword.syntax–operator.syntax–new,
.syntax–source.syntax–js .syntax–keyword.syntax–operator.syntax–typeof,
.syntax–source.syntax–js .syntax–keyword.syntax–operator.syntax–void {
color: #c678dd;
}
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–dictionary.syntax–json > .syntax–string.syntax–quoted.syntax–json {
color: #e06c75;
}
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–dictionary.syntax–json > .syntax–string.syntax–quoted.syntax–json > .syntax–punctuation.syntax–string {
color: #e06c75;
}
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–dictionary.syntax–json > .syntax–value.syntax–json > .syntax–string.syntax–quoted.syntax–json,
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–array.syntax–json > .syntax–value.syntax–json > .syntax–string.syntax–quoted.syntax–json,
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–dictionary.syntax–json > .syntax–value.syntax–json > .syntax–string.syntax–quoted.syntax–json > .syntax–punctuation,
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–array.syntax–json > .syntax–value.syntax–json > .syntax–string.syntax–quoted.syntax–json > .syntax–punctuation {
color: #98c379;
}
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–dictionary.syntax–json > .syntax–constant.syntax–language.syntax–json,
.syntax–source.syntax–json .syntax–meta.syntax–structure.syntax–array.syntax–json > .syntax–constant.syntax–language.syntax–json {
color: #56b6c2;
}
.syntax–source.syntax–ruby .syntax–constant.syntax–other.syntax–symbol > .syntax–punctuation {
color: inherit;
}
.syntax–source.syntax–python .syntax–keyword.syntax–operator.syntax–logical.syntax–python {
color: #c678dd;
}
.syntax–source.syntax–python .syntax–variable.syntax–parameter {
color: #d19a66;
}
–>

1 Boost.Function

Boost.Function位于 #include <boost/function.hpp> 之中,其提供了类似函数指针的功能。但是这个“函数指针”不但能够指向普通的函数而且还能够指向函数对象或者成员函数。我们可以将其当作对函数指针功能的扩展。下面是它的一个使用示例:

#include <iostream>#include <boost/function.hpp> struct myStruct{    int operator ()(const char* str)    {        std::cout<<str<<std::endl;        return 0;    }}; int main(){    myStruct mySt;    boost::function<int (const char*)> fPtr;    fPtr = mySt;    fPtr(“function object”);    fPtr = std::atoi;    std::cout<<fPtr(“53”)<<std::endl;}

在这个例子中我们分别给fPtr赋值了一个函数对象和函数,可以看出它们的表现相同。如果我们调用一个没有赋值的function时,会抛出boost::bad_function_call异常,当我们给function赋值为0时会释放其保存的函数,这时候对其的调用同样会引发上述异常。当我们用function对象来保存一个成员函数时,必须在定义的时候显示的在第一个输入指定是那个类,同时在调用的使用第一个参数必须要是类对象的地址,下面是一个调用示例:

#include <iostream>#include <boost/function.hpp> struct myStruct{    void hello(std::ostream & os)    {        os<<“Hello world!”<<std::endl;    }}; int main(){    myStruct mySt;    boost::function<void (myStruct*,std::ostream&)> fPtr = &myStruct::hello;    fPtr(&mySt,boost::ref(std::cout));}

这里我们使用的是指针传递,当然对应的也可以使用引用传递和值传递,这里不过多介绍了,如果想了解可以参考后面提到的参考文章。另外这里使用到了boost::ref用来传递不可复制的输出流的引用,它提供了一个方便的机制向boost::function传递引用,当然这里也可以不加。

2 Boost::Lambda

Lambda表达式又称匿名函数,用来定义一些小的而且无需关心函数名的函数,在这些场合使用Lambda表达式定义函数能够使得程序看起来更加清晰。但是如果过分的使用lambda表达式又会是程序过于混乱。在使用的过程中必须要根据实际情况进行取舍。lambda表达式的目的是让源代码更加紧凑,也更容易理解。首先我们先看一个不使用lambda的一个示例:

#include <iostream>#include <vector>#include <algorithm> void print(int i){  std::cout << i << std::endl;} int main(){  std::vector<int> v;  v.push_back(1);  v.push_back(3);  v.push_back(2);   std::for_each(v.begin(), v.end(), print);}

这个例子是用来循环打印向量中的元素。对于这个简短的打印函数在每次调用的过程中都要想普通函数那样进栈出栈,十分浪费时间。一个解决办法是使用inline关键字将其声明为在线函数。但是这还存在一个问题,就是代码很不紧凑,这个时候我们就可以使用lambda表达式来解决这个问题,使用示例如下:

#include <iostream>#include <vector>#include <algorithm>#include <boost/lambda/lambda.hpp> int main(){  std::vector<int> v;  v.push_back(1);  v.push_back(3);  v.push_back(2);   std::for_each(v.begin(), v.end(), std::cout<<boost::lambda::_1<<“\n”);}


这里我们结合lambda表达式和占位符_1就将上面的函数集成到其调用之处了。boost::lambda定义了三个占位符,_1,_2,_3boost::bind 不同,它的占位符定义在单独的命名空间中。boost::lambda很强大但是也有缺点,比如上面最后必须使用\n而不能使用std::endl。下面这个例子使用了boost::lambda::if_then()来输出大于1的元素。

#include <iostream>#include <vector>#include <algorithm>#include <boost/lambda/lambda.hpp>#include <boost/lambda/if.hpp> int main(){  std::vector<int> v;  v.push_back(1);  v.push_back(3);  v.push_back(2);   std::for_each(v.begin(), v.end(),boost::lambda::if_then(boost::lambda::_1>1,      std::cout<<boost::lambda::_1<<“\n”));}


除了boost::lambda::if_then(),boost.lambda还提供了boost::lambda::if_then_else()boost::lambda::if_then_else_return()模板函数,它们都要求三个参数。另外还提供了用于实现循环、转换操作符,甚至是throw——允许lambda函数抛出异常的模板。
虽然可以用这些来构造复杂的lambda函数,但我们必须要考虑到代码的可读性不能一味地追求代码的紧凑。有时候动手编写一个单独的函数可能是个不错的选择。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,580
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918